日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

My second page-数组删除 —— By Nicolas

發布時間:2023/12/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 My second page-数组删除 —— By Nicolas 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇page要講的便是針對leetcode上面的27.移除元素,說實話啊,這一題小尼有點被惡心了,確實是小尼對循環的界限忘記了,所以前面提交了五次都是失敗了,但是最后還是找出了問題,這個問題小尼用的是暴力循環解法,就是兩層for循環解決問題,但是中間我出的問題就是我在第一次之后的開始循環的過程時,我把第一步的i沒有歸位,導致我每次繼續循環是不斷的在下一個元素進行,這使得通過的案例是有,但是就是走不完。先上一個我作物的代碼。

int lengh = nums.length; int val ; Scanner in = new Scanner(System.in); val = in.nextInt(); int s = lengh; for(int i = 0;i<lengh;i++){if(nums[i] == val){for(int j = i;j<s;j++){nums[j] = nums[j+1];}s = s - 1;} } return s;

這種暴力的寫法比較多簡潔,不像有的暴力寫法那么繁瑣(這點有興趣的小伙伴可以學習),但是這里面出的問題就是我的i和lengh在不斷的循環的過程中它都是在增加或者不變的,在我遇到了一個指定元素之后,我的數組的元素的數量肯定是會減少的,而且那么就相當于我的數組收到了改變,那么我重遍歷的時候,我的i值肯定需要從0開始進行,但是我在開始的代碼沒有做這一步操作,導致不斷的通不過,這里也是在暴力法上面我覺得最難或者最重要的一點,一定要知道我的數組一旦發生了改變,那么我的遞歸的順序還是要從頭再來,那么一定要考慮的我的程序是否可以從頭開始,上面的代碼明顯做不到,接下來繼續拉一個正確的代碼

int lengh = nums.length; int val ; Scanner in = new Scanner(System.in); val = in.nextInt(); int s = lengh; for(int i = 0;i<lengh;i++){if(nums[i] == val){for(int j = i;j<s;j++){nums[j] = nums[j+1];}s = s - 1;}i--;lengh--; }

以上代碼就也就加了兩條,這兩條也是在本題使用暴力解法的核心,就是需要注意到,我們的數組的遍歷需要重新開始以及我們的數組的長度發生了變化。

接下來說一說小尼今天學到的覆蓋的思想,這種方法的很多解法講它稱為指針解法,就是說定義兩個指針,一個快指針,一個滿指針,然后快指針不斷的往前遍歷我們的數組,滿指針就是一個一個的記錄,其實我覺得這是個覆蓋的思想,就好比,我不斷的派人去前方偵查敵情,然后我采取對應的措施,這里拉一下代碼

int lengh = nums.lengh;

int fast = 0;

int slow = 0;

for(fast;fast<lengh;fast++){

? ? ? ? if(nums[fast]? != target){

? ? ? ? ? ? ? ? nums[slow] = nums[fast];

????????????????slow++;

????????}

}

return slow;

這里就是拿fast不斷的往前探索,只要不是我的目標元素我就不斷的用slow重新重組我們的數組,這時候我們的數組就會被不斷的更新,最后就形成了一個新的數組,這跟我們的上面的暴力解法是完全不同的兩個東西,暴力解法就是在破壞數組,進行把中間目標元素拿掉用后面的元素不斷的覆蓋,而指針法就是不斷的重組,這就是今天我想分享的數組重組。

總結

以上是生活随笔為你收集整理的My second page-数组删除 —— By Nicolas的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。