704.二分查找
題目鏈接704. 二分查找 - 力扣(LeetCode)
第一思路:
暴力法,循環查找相同元素,拋出下標值
第二思路:
仔細看題,題目需要使用二分查找,是有序的數組,那么就需要查找數組的中間值,用來不斷的將判斷范圍縮小,減少不必要的運算;將數組mid位置的值與target相比較,若mid大于target,只需要比較mid到right的值,逐步縮小范圍;若相反則只需要比較left到mid的值;
注意點:
1、注意mid的設置,防止越界;
2、注意left與right比較,是否有=號,確定開區間與閉區間的區別;
屏幕截圖 2022-10-13 221742.png
27.移除元素
題目鏈接:27. 移除元素 - 力扣(LeetCode)
第一思路:
將數組中元素移除,順便將length數組減一,這樣只獲取到數組剩余的值即可;
注意點:
1、需要考慮重復元素替換的問題
2、需要考慮數組長度不斷變化的問題
image.png
第二思路:
雙指針法:通過兩個指針,在一個for循環中完成兩個for循環的工作;快慢指針同時前進,當快指針查找到目標元素時,慢指針暫停,快指針繼續指向下一位,然后刪除目標元素(即使用后位元素替換目標元素),然后慢指針繼續前進,直到快指針查找完全部元素,返回慢指針的個數即可;
注意點:
1、i其實不必要了,直接可以用fast代替i,這樣可以減少一個變量;
2、slow++可以直接寫到nums[slow++]中,更簡練
image.png