代码随想录day7|454. 四数相加 II、383. 赎金信、15. 三数之和、18. 四数之和

四数相加||

  1, 简单的两层 for循环 map.put(i+j, map.getOrDefault(i+j,0));

  2, res+=map.getOrDefault(-i-j,0);

 赎金信

  1, 定义一个26长的数组记录 res[ s1.charAt(i)-'a'] ++;

三数之和

  1, 双指针法, 如果三数相加小于0 left++, 如果三数相加大于0 right--;

  2, left和right的去重在 temp==0后 while(left<right&&nums[left]==nums[left+1]) left++;

  3, i的去重在while(left<right)循环前  if(i>=1&&nums[i]==nums[i-1]) continue; 

四数之和

  1, 在三数之和上 多一层循环 j做好去重

  2, 有很多剪枝操作没做好, 

posted @ 2023-02-21 22:53  绝云气负青天  阅读(13)  评论(0)    收藏  举报