摘要:示例輸入輸出示例輸入輸出第一種方法滑動窗口解法滑動窗口兩個邊界情況第二種方法位運算解法位運算頭條財經部門一面二維數組的回形遍歷這是頭條財經部門一面的一道題記住遍歷過的索引更多前端算法題,參見算法倉庫。
1. 百度百家號一面
面完回來搜素,才發現這道題其實是LeetCode540。
540 medium 有序數組中的單一元素
給定一個只包含整數的有序數組,每個元素都會出現兩次,唯有一個數只會出現一次,找出這個數。
示例 1:
輸入: [1,1,2,3,3,4,4,8,8]
輸出: 2
示例 2:
輸入: [3,3,7,7,10,11,11]
輸出: 10
/** * 解法1:滑動窗口 * @param {number[]} nums * @return {number} */ var singleNonDuplicate = function(nums) { for (let i = 0; i < nums.length; i++){ // 兩個邊界情況 if (i === 0 && nums[i]!==nums[i+1])return nums[i]; if (i === nums.length - 1 && nums[i]!==nums[i-1])return nums[i]; if (nums[i] !== nums[i+1] && nums[i] !== nums[i-1]){ return nums[i] } } };第二種方法:位運算
/** * 解法2:位運算 * @param {number[]} nums * @return {number} */ var singleNonDuplicate2 = function(nums) { let a = nums[0] for (let i = 1; i < nums.length; i++){ a = a ^ nums[i] } return a; };頭條財經部門一面
二維數組的回形遍歷
// 這是頭條財經部門一面的一道題 let arr2 = [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ] let fn = (arr) => { let rowNumber = arr.length; let colNumber = arr[0].length; let printArr = [arr[0][0]]; let rowIndex = 0; let colIndex = 0; let moveDirection = "down"; let hash = {"00": true}; // 記住遍歷過的索引 let total = rowNumber * colNumber - 1; while(total > 0){ if (moveDirection === "down"){ if (rowIndex === rowNumber - 1){ moveDirection = "right" continue; } else if (hash[rowIndex + 1 + "" + colIndex]){ moveDirection = "right" continue; } rowIndex++; } else if (moveDirection === "right") { if (colIndex === colNumber - 1){ moveDirection = "up" continue; } else if (hash[rowIndex + "" + (colIndex + 1)]){ moveDirection = "up" continue; } colIndex++; } else if (moveDirection === "up"){ if (rowIndex === 0){ moveDirection = "left" continue; } else if (hash[rowIndex - 1 + "" + colIndex]){ moveDirection = "left" continue; } rowIndex--; } else if (moveDirection === "left"){ if (colIndex === 0){ moveDirection = "down" continue; } else if (hash[rowIndex + "" + (colIndex - 1)]){ moveDirection = "down" continue; } colIndex--; } printArr.push(arr[rowIndex][colIndex]); hash[rowIndex + "" + colIndex] = true; total--; } return printArr; } console.log(fn(arr2));
更多前端算法題,參見LeetCode算法倉庫。
GitHub:https://github.com/cunzaizhuy...
歡迎star!!!
這里有60多道已經提交通過的LeetCode題目,每天都在更新~~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110001.html
摘要:前言在大廠工作了年,當了年的前端面試官,把大廠常問的面試題與答案匯總在我的中。第題如何劫持的請求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問到如何劫持請求的時候就一臉懵逼,是因為還是停留在理論性階段。前言 在大廠工作了6年,當了3年的前端面試官,把大廠常問的面試題與答案匯總在我的Github中。希望對大家有所幫助,助力大家進入自己理想的企業。 項目地址是:git...
摘要:前言在大廠工作了年,當了年的前端面試官,把大廠常問的面試題與答案匯總在我的中。第題如何劫持的請求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問到如何劫持請求的時候就一臉懵逼,是因為還是停留在理論性階段。 前言 在大廠工作了6年,當了3年的前端面試官,把大廠常問的面試題與答案匯總在我的Github中。希望對大家有所幫助,助力大家進入自己理想的企業。 項目地址是:...
摘要:前言在大廠工作了年,當了年的前端面試官,把大廠常問的面試題與答案匯總在我的中。第題如何劫持的請求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問到如何劫持請求的時候就一臉懵逼,是因為還是停留在理論性階段。 前言 在大廠工作了6年,當了3年的前端面試官,把大廠常問的面試題與答案匯總在我的Github中。希望對大家有所幫助,助力大家進入自己理想的企業。 項目地址是:...
摘要:今年歲,畢業之后進入一家小型的互聯網公司工作,名字就不說了,算是熟知的,在這家公司呆了兩年,直至今年才有了跳槽的想法。在眾多大廠中,最終選擇了字節跳動。這樣的調整,一方面對自己學習有幫助,另一方面讓自己應對面試更從容,更順利。 ...
閱讀 1829·2021-09-22 15:55
閱讀 3521·2021-09-07 10:26
閱讀 628·2019-08-30 15:54
閱讀 684·2019-08-29 16:34
閱讀 839·2019-08-26 14:04
閱讀 3258·2019-08-26 11:47
閱讀 2133·2019-08-26 11:33
閱讀 2294·2019-08-23 15:17