電商網(wǎng)站運(yùn)營方案百度優(yōu)化點(diǎn)擊軟件
lc-15.三數(shù)之和 (時(shí)隔13天)
目前可通過,想法上無邏輯問題,一點(diǎn)細(xì)節(jié)小錯(cuò)誤需注意即可
lc-283.移動(dòng)零(時(shí)隔16天)
總結(jié):觀察案例直覺就是雙指針遇零交換,兩次實(shí)現(xiàn)都通過了,且思想與題解一致,但是時(shí)間復(fù)雜度較高,沒有題解巧妙,代碼實(shí)現(xiàn)的方式會(huì)影響到時(shí)間復(fù)雜度,需要想到一個(gè)巧妙的代碼實(shí)現(xiàn),才能使時(shí)間復(fù)雜度為O(n);
思路:一個(gè)指針從首位開始指向,如果遇到0停下,另一個(gè)指針則尋找不是0的,找到后二者進(jìn)行交換即可,首位指針i走到頭即可結(jié)束
分析:設(shè)置兩個(gè)指針,其中一個(gè)指針可以用for循環(huán)i代表,另一個(gè)指針初始化一個(gè)變量即可。
尋找非零指針用for循環(huán)中的i代表則更好,條件結(jié)束時(shí)說明數(shù)組里面已經(jīng)無非零元素了。
class Solution {public void moveZeroes(int[] nums) {if(nums==null) {return;}//兩個(gè)指針i和jint j = 0;for(int i=0;i<nums.length;i++) {//當(dāng)前元素!=0,就把其交換到左邊,等于0的交換到右邊if(nums[i]!=0) {int tmp = nums[i];nums[i] = nums[j];nums[j++] = tmp;}}}
}