引言:
本文中的解決方案硅卢,代碼風(fēng)格都只代表本人拙見射窒,如有更好的解決思路和方法,希望大家在評論區(qū)或私信中交流将塑,共同進步脉顿,謝謝
(注:最新更新的題目在最上面,之前的題目往下翻)
2018-11-14(第二次更新)
2.1 從排序數(shù)組中刪除重復(fù)項
1)問題描述:
? ? //給定一個排序數(shù)組点寥,你需要在原地刪除重復(fù)出現(xiàn)的元素艾疟,使得每個元素只出現(xiàn)一次,返回移除后數(shù)組的新長度。
? ? //不要使用額外的數(shù)組空間蔽莱,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成弟疆。
? ? ?// 給定 nums = [0,0,1,1,1,2,2,3,3,4], 函數(shù)應(yīng)該返回新的長度 5,?
? ? //并且原數(shù)組 nums 的前五個元素被修改為 0, 1, 2, 3, 4。 你不需要考慮數(shù)組中超出新長度后面的元素盗冷。
????/**
????* @param {number[]} nums
????* @return {number}
????*/
????2)解決思路:
? ? ? 認(rèn)真審題怠苔,發(fā)現(xiàn)他只要求將原數(shù)組的前N個元素變成不重復(fù)的,后面的元素不用考慮仪糖,所以我們需要使用自定義的序號來記錄這前N個元素柑司。
? ? 3)代碼:
2.2旋轉(zhuǎn)數(shù)組
? ? 1)問題描述:
????????// 給定一個數(shù)組,將數(shù)組中的元素向右移動 k 個位置锅劝,其中 k 是非負(fù)數(shù)
? ? ? ? // 輸入: [1, 2, 3, 4, 5, 6, 7] 和 k = 3
? ? ? ? // 輸出: [5, 6, 7, 1, 2, 3, 4]
? ? ? ? // 解釋:
? ? ? ? // 向右旋轉(zhuǎn) 1 步: [7, 1, 2, 3, 4, 5, 6]
? ? ? ? // 向右旋轉(zhuǎn) 2 步: [6, 7, 1, 2, 3, 4, 5]
? ? ? ? // 向右旋轉(zhuǎn) 3 步: [5, 6, 7, 1, 2, 3, 4]
? ? ? ? /**
? ? ? ? * @param {number[]} nums
? ? ? ? * @param {number} k
? ? ? ? * @return {void} Do not return anything, modify nums in-place instead.
? ? ? ? */
? ? 2)解決思路:
? ? ? ? 直接使用js中數(shù)組的API方法攒驰,將pop出來的數(shù)組最后的元素用unshift方法添加在數(shù)組最前面即可
? ? 3)代碼:
2.3?存在重復(fù)
? ? 1)問題描述:
????如果任何值在數(shù)組中出現(xiàn)至少兩次,函數(shù)返回 true故爵。如果數(shù)組中每個元素都不相同玻粪,則返回 false。
? ??示例 1:
? ??????輸入:[1,2,3,1]
? ??????輸出:true
? ??示例 2:
? ??????輸入: [1,2,3,4]
? ??????輸出:false
? ? 2)解決思路:
? ? 先將數(shù)組排個序诬垂,然后遍歷數(shù)組比較相鄰兩個元素即可
? ? 3)代碼:
2.4加一
? ? 1)問題描述:
????????//給定一個由整數(shù)組成的非空數(shù)組所表示的非負(fù)整數(shù)奶段,在該數(shù)的基礎(chǔ)上加一。
? ? ? ? // 最高位數(shù)字存放在數(shù)組的首位剥纷, 數(shù)組中每個元素只存儲一個數(shù)字痹籍。
? ? ? ? // 你可以假設(shè)除了整數(shù) 0 之外,這個整數(shù)不會以零開頭晦鞋。
? ? ? ? //輸入: [1,2,3]
? ? ? ? // 輸出: [1,2,4]
? ? ? ? // 解釋: 輸入數(shù)組表示數(shù)字 123蹲缠。
? ? ? ? /**
? ? ? ? * @param {number[]} digits
? ? ? ? * @return {number[]}
? ? ? ? */
? ? 2)解決思路:
? ? ? ?先理解題意:
? ? ? ? ? ? 就是用數(shù)組的每一項組成一個正數(shù),比如[1悠垛,2线定,3]就相當(dāng)于123這個正數(shù),然后對這個正數(shù)做加一運算
? ????? 開始解題:
? ? ? ? ? ? a.普通情況:數(shù)組的第一個元素或者第一個以后的某個元素(就是組成正數(shù)的最高位确买,或者最高位之后的某一位)不為9斤讥,這時,我們可以倒序循環(huán)數(shù)組湾趾,將最后一個元素執(zhí)行加一操作芭商,如果這個元素為9,就將它置為0搀缠,繼續(xù)遍歷铛楣,下一個元素加一,以此類推艺普。
? ? ? ? ? ? b.極端情況:數(shù)組中的每個元素都是9簸州,那么就可以新建一個數(shù)組鉴竭,長度為原數(shù)組長度+1,將“1”這個元素放在數(shù)組第一個元素岸浑,其他元素置為0即可搏存。
? ? 3)代碼:
2018-11-04(第一次更新)
? ? 1)問題描述:
????????// 給定一個整數(shù)數(shù)組和一個目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個數(shù)矢洲。
? ? ? ? // 你可以假設(shè)每個輸入只對應(yīng)一種答案祭埂,且同樣的元素不能被重復(fù)利用。
? ? ? ? /**
? ? ? ? * @param {number[]} nums
? ? ? ? * @param {number} target
? ? ? ? * @return {number[]}
? ? ? ? */
? ? 2)解決思路:
? ? ? ? ? ? 1.雙層for循環(huán)兵钮,外層循環(huán)每次按序從數(shù)組中取出一個數(shù)作為兩個數(shù)中的一個num1 = nums[i],
? ? ? ? ? ? 2. 在外層循環(huán)中獲取另一個數(shù)的值:? leftValue = target - num1??
? ? ? ? ? ? 3.內(nèi)層循環(huán)舌界,將數(shù)組中每個值與leftValue 比較掘譬,如果相等,則把外層循環(huán)中的值和內(nèi)層循環(huán)中的值添加到新數(shù)組中呻拌,返回葱轩。