複習總結Day03----LeetCode

一、尋找峯值:

注意事項:

  ①:應該使用二分法
  ②:使用二分法時low和high的改變原因及改變方式。
if(nums[mid] > nums[mid + 1]) high = mid;
else if(nums[mid] < nums[mid + 1]) low = mid + 1;

二、有效的括號:

注意事項:

  問題不大

三、合併K個排序鏈表:

注意事項:

  ①:將問題分解,將合併n個排序鏈表轉化成合並兩個排序鏈表。要新建一個子程序來做這件事。
  ②:注意合併之後的鏈表是從小到大排序的。

四、環形鏈表:

注意事項:

  麼的問題

五、旋轉數組:

注意事項:

  麼的問題

六、環形鏈表Ⅱ:

注意事項:

  麼的問題

七、x的平方根:

注意事項:

  問題不大

八、搜索旋轉排序數組:

注意事項:

   ①:在尋找旋轉點下標的子程序中,要注意咯low和high的賦值及複製條件
   ②:當旋轉點兩邊都沒有相關點時,應該返回的是-1,而不是加起來的和0。

九、在排序數組中查找元素的第一個和最後一個位置:

注意事項:

  問題不大

十、搜索旋轉排序數組 II:

注意事項:

  數組中有重複元素,所以在找旋轉點時,如果數組首、中、尾三點值相等,那麼不能使用二分查找,退化成順序查找。
if(nums[low] == nums[mid] && nums[mid] == nums[high]){
 for(int i = low;i < high - 1;i++) {
  if(nums[i] <= nums[i + 1] && nums[i + 1] > nums[i + 2]) return i + 2;//返回 i + 2表示的是旋轉點的下標
 }
}

十一、移除鏈表元素:

注意事項:

  鏈表節點的刪除方法。

十二、移除元素:

注意事項:

  問題不大

十三、尋找旋轉排序數組中的最小值:

注意事項:

  使用二分法時low和high的改變原因及改變方式。
while(low < high){
 mid = low + ((high - low) >> 1);
 if(nums[mid] > nums[high]){
    low = mid + 1;
 }else{
   high = mid;
 }
}

十四、設計哈希集合:

注意事項:

  ①:由於設計的是Set集合,所以存儲的元素都是不相同的,所以刪除的時候要將所有的該元素全部刪去。

十五、只出現一次的數字:

注意事項:

  麼的問題

十六、存在重複元素:

注意事項:

  注意在向set內添加元素的時候就要判斷該元素是不是重複元素。

十七、存在重複元素 II:

注意事項:

  使用set集合存儲比map存儲更好。

十八、字符串中的第一個唯一字符:

注意事項:

  麼的問題

十九、 同構字符串:

注意事項:

  在使用HashMap方法(key存s的字符,value存t的字符)做此題時,要注意判斷條件:如果HashMap的key中存在s的第i個字符,那麼判斷這個key對應的value是不是t的第i個字符;如果HashMap的key中不存在s的第i個字符,那麼判斷t的第i個字符在HashMap中存不存在;最後不要忘記將s和t的第i個字符加入HashMap中

二十、顏色分類:

注意事項:

  注意cur是可以等於blue的。

二十一、兩個數組的交集:

注意事項:

  問題不大

二十二、 兩個數組的交集 II:

注意事項:

  問題不大

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章