当前位置: 首页 > news >正文

LeetCode 两数之和 + 三数之和

两数之和 简单题

思路:一个Map,key是数值,value是该数值对应的下标,遍历的时候判断一下当前数组下标对应的值在map里有没有可组合成target的(具体体现为在map里找target-nums【i】),如果有,直接返回,没有的话就加进去,继续找。

需要掌握的方法:map的get和containsKey

cl
ass Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> m = new HashMap<>();m.put(nums[0],0);for(int i = 1;i<nums.length;++i){if(m.containsKey(target - nums[i])){return new int[]{m.get(target-nums[i]),i};}else{m.put(nums[i],i);}}return new int[0];}
}

三数之和 双指针 中等题

思路:严格上来说算三个指针,一个i是维护当前遍历到的数字下标,之后的l和r指针是从i所处位置开始,在i + 1 到len - 1这个区间中寻找nums[i]的相反数。

class Solution {// -4 -1 -1 0 1 2 // public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);int len = nums.length;if(len < 2){return res;}for(int i = 0;i < len;++i){int l = i + 1;int r = len - 1;if( i != 0 && nums[i] == nums[i-1]){//与前一个数重复需要调过,不然会出现重复的三元组continue;}while(l < r){if(nums[i] + nums[l] + nums[r] == 0){if(l > i + 1 && nums[l] == nums[l-1] ){//这里也是同理l ++ ;continue;}List<Integer> tmp = new ArrayList<>();tmp.add(nums[i]);tmp.add(nums[l]);tmp.add(nums[r]);l++;r--;//左右指针都要变,因为l变大的话,还希望结果有可能为0,r必须变小(意味着nums[r]变小)res.add(tmp);}else if(nums[i] + nums[l] + nums[r] < 0){//nums[l] 太小了,把它变大一点l ++;}   else{r --;}}}return res;}
}
http://www.lryc.cn/news/366297.html

相关文章:

  • Switch刷机:安装Android系统和Linux系统
  • DeepDriving | 多目标跟踪算法之SORT
  • 实验演示方波是由正弦波叠加而成的
  • 进口电动流量调节阀的选型-美国品牌
  • 【人工智能】流行且重要的智能算法整理
  • webrtc客户端测试和arm平台测试(待补充)
  • Unity ShaderGraph 扭曲
  • 鸿蒙Ability Kit(程序框架服务)【应用启动框架AppStartup】
  • DBeaver添加DM8驱动(maven下载和jar包下载配置)
  • EXCEL多sheet添加目录跳转
  • MySQL之查询性能优化(十)
  • 短视频矩阵源码----如何做正规开发规则分享:
  • 4. JavaScript 循环与迭代
  • 智能视频监控平台LntonCVS视频融合共享平台保障露营安全解决方案
  • python如何画函数图像
  • zeppelin(kylin的可视化界面安装)(从头到尾安装)
  • python词云生成库-wordcloud
  • 鸿蒙开发接口数据管理:【@ohos.data.rdb (关系型数据库)】
  • Java返回前端Bigdecimal类型数据时“0E-8“及小数点多余0的问题
  • 标题:深入探索Linux中的`ausyscall`
  • CorelDRAW2024发布更新啦!设计师们的得力助手
  • SpringMVC日期格式处理 分页条件查询
  • 蓝桥云课第12届强者挑战赛
  • LabVIEW储油罐监控系统
  • 局域网、城域网、广域网的ip
  • 【全开源】Java共享茶室棋牌室无人系统支持微信小程序+微信公众号
  • echarts数据更新没反应解决方案
  • RK3588+FPGA+算能BM1684X:高性能AI边缘计算盒子,应用于视频分析、图像视觉等
  • Mysql学习(三)——SQL通用语法之DML
  • java static 如何理解