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

外贸网站 开源广州番禺区偏僻吗

外贸网站 开源,广州番禺区偏僻吗,抚州建设网站的公司,php做网站视频播放下载功能面试经典150题 day29 题目来源我的题解方法一 暴力解法 超时方法二 扩展两数之和(双指针)方法三 扩展为通用的n数之和 题目来源 力扣每日一题;题序:15 我的题解 方法一 暴力解法 超时 进行三重循环遍历,判断和是否为…

面试经典150题 day29

      • 题目来源
      • 我的题解
        • 方法一 暴力解法 超时
        • 方法二 扩展两数之和(双指针)
        • 方法三 扩展为通用的n数之和

题目来源

力扣每日一题;题序:15

我的题解

方法一 暴力解法 超时

进行三重循环遍历,判断和是否为0,若为0,则将对应的值组合成List并加入Set。

时间复杂度:O( n 3 n^3 n3)
空间复杂度:O(n)

public List<List<Integer>> threeSum(int[] nums) {Set<List<Integer>> resSet=new HashSet<>();int n=nums.length;for(int i=0;i<n-2;i++){for(int j=i+1;j<n-1;j++){for(int k=j+1;k<n;k++){if(nums[i]+nums[j]+nums[k]==0){List<Integer> t=Arrays.asList(nums[i],nums[j],nums[k]);t.sort((a,b)->a-b);resSet.add(t);}}}}return new ArrayList<>(resSet);
}
方法二 扩展两数之和(双指针)

先确定一个数,然后使用两数之和的解法进行计算。注意需要去重,即在求两数之和的过程中需要将去掉重复的元素。

时间复杂度:O( n 2 n^2 n2)。
空间复杂度:O(n)

public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> res=new ArrayList<>();for(int i=0;i<nums.length;){List<List<Integer>> t=twoSum(nums,-nums[i],i);int pre=nums[i];while(i<nums.length&&nums[i]==pre)i++;res.addAll(t);}return res;
}
public List<List<Integer>> twoSum(int[] nums,int  target,int index){int left=index+1,right=nums.length-1;List<List<Integer>> res=new ArrayList<>();while(left<right){int tNum=nums[left]+nums[right];int preLeft=nums[left];int preRight=nums[right];if(index==left){left++;continue;}if(index==right){right--;continue;}if(tNum==target){List<Integer> t=Arrays.asList(-target,nums[left],nums[right]);res.add(t);while(left<right&&nums[left]==preLeft)left++;while(right>left&&nums[right]==preRight)right--;}else if(tNum<target){while(left<right&&nums[left]==preLeft)left++;}else{while(right>left&&nums[right]==preRight)right--;}}return res;
}
方法三 扩展为通用的n数之和

时间复杂度:O( n 2 n^2 n2)。
空间复杂度:O(n)

public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> resList = nSum(nums, 0, 3, 0);return resList;
}public  List<List<Integer>> nSum(int[] nums, int target, int n, int start) {int len = nums.length;List<List<Integer>> res = new ArrayList<>();if (n == 2) {int left = start, right = len - 1;while (left < right) {int temp = nums[left] + nums[right];int l = nums[left], r = nums[right];if (temp < target) {while (left < right && l == nums[left])left++;} else if (temp > target) {while (left < right && r == nums[right])right--;} else {List<Integer> sub = new ArrayList(Arrays.asList(nums[left], nums[right]));res.add(sub);while (left < right && l == nums[left])left++;while (left < right && r == nums[right])right--;}}} else {for (int i = start; i < len; i++) {List<List<Integer>> subList = nSum(nums, target - nums[i], n - 1, i + 1);for (List<Integer> list : subList) {list.add(nums[i]);res.add(list);}while (i < len - 1 && nums[i] == nums[i + 1])i++;}}return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

http://www.yayakq.cn/news/284045/

相关文章:

  • 中国空间站vr全景网站开发成本包括
  • 网站制作公司南宁线下推广渠道
  • cc域名做门户网站肥乡专业做网站
  • 可以做区位分析的网站西安优化外包
  • 美妆企业网站模板淮南公司做网站
  • 卫生院网站建设app软件开发
  • 网站模版制作友情链接怎么交换
  • 网络运维工程师教程百度seo推广怎么收费
  • 网站移动端seo重庆工程招投标交易信息网
  • 养老网站建设的意义北京好的做网站的公司有哪些
  • 各大网站官网的导航栏怎么做购物网站开发 需求分析
  • 旅游建设门户网站的方案wordpress说有图片居中对齐
  • ps软件下载官方网站wordpress .net 比较
  • 如何做电子书网站网络开发工程师工资
  • 网站没备案能百度推广吗国家建设执业资格注册中心网站
  • 高校邦营销型网站建设答案网站建设项目采购合同
  • 永城做网站优化公司治理结构的措施
  • 哪些网站是单页面最好的网站建设公司哪家好
  • 祭祖网站怎么做物流建设网站总结报告
  • 经典的网站设计自适应网站开发框架
  • 网站开发的出路深圳网站设计 建设元
  • 广州10大网站服务品牌自己做的网站如何包装
  • 怎么选择手机网站建设广告设计服务
  • 网站备案负责人 更换网站邮箱配置
  • 网页设计与网站建设期末考试做视频采集网站犯法
  • 中国最大的网站建设公司中国建设银行官企业网站
  • 广州做网站星珀郑州网站制作服务
  • 广西网站建设哪家强浙江外发加工网
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题好的app设计网站
  • 深圳企业网站seo小程序源码提取工具