博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Two Sum问题
阅读量:6279 次
发布时间:2019-06-22

本文共 1501 字,大约阅读时间需要 5 分钟。

经典的two/three sum算法

哈希法

请输入代码

two pointers方法

请输入代码

two/three sum的变形问题

关于three sum问题要做的和不要做的

应该做的

  • 第一个应该想到的方法是暴力解法,N integer就是N重循环,这是unacceptable solution,但是it's natural

  • 如果想使用two pointers而不是哈希的方法,那么一定要先sort array

  • 如果题目要求返回value不重复的pair/triple,那么一定要用HashSet 去重

  • 在while loop的condition判定中,无论哪种condition,一定都要更新pointer,否则会陷入死循环

不应该做的

  • 如果是返回结果和index有关或者题目本身条件判定和index有关,那么不建议使用two pointers方法,因为在sort array的时候original index信息会丢失(尽管我们可以用wrapper class把original index信息放进去,但是那样代码会复杂一些),这时哈希方法可能会更好

  • 如果while loop里头的condition判定条件可以i++或者j--(或者说 i++ 和j--都必须尝试),那么这种方法不建议使用,因为无法判断下一步的操作。这时候可以尝试anchor不一样的index,如果现在是把第一个index anchor住,那么可以考虑把最后一个anchor,使得最后没有任何的“歧义”。

Triangle Count :Given an array of integers, how many three numbers can be found in the array, so that we can build an triangle whose three edges length is the three numbers that we find?Given array S = [3,4,6,7], return 3. They are:[3,4,6][3,6,7][4,6,7]Given array S = [4,4,4,4], return 4. They are:[4(1),4(2),4(3)][4(1),4(2),4(4)][4(1),4(3),4(4)][4(2),4(3),4(4)]public int triangleCount(int S[]) {        // write your code here        int res = 0;        if(S.length == 0 || S == null)            return res;        Arrays.sort(S);        for(int i = S.length - 1; i > 0; i--) {            int l = 0;            int r = i - 1;            while(l < r) {                if(S[l] + S[r] > S[i]){                    res += (r-l);                    r--;                }                else                    l++;            }        }        return res;    }

转载地址:http://atfva.baihongyu.com/

你可能感兴趣的文章
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>