使用碰撞指针解决LeetCode问题:SortColor75,TwoSumII167,ReverseString344,reverseVowels345
来源:互联网 发布:ep软件 编辑:程序博客网 时间:2024/06/05 14:31
1.TwoSumII 167问题
题目:给定一个升序数组arr,和一个数字num。从arr中找到两个数字使其和等于num,返回这两个数的索引位置。数组中一定有解且唯一,同一个数不能使用两次。
解答:常用的方法有三种:
- l 最容易想到的是暴力破解。对于每一个数字num,在数组中按序遍历查找num-arr[i],缺点是没有使用到升序这一条件。时间复杂度是O(n2)
- l 上边进行优化,可以使用二分查找搜索num-arr[i].二分法时间复杂度log(n),遍历数组是n,所以时间复杂度是nlog(n).
- l 采用碰撞指针i j,分别指向首尾,如果arr[i]+arr[j]>num证明和太大,将j减小,使得和变小后再计算,反之将i增大之后再
public class TwoSumII167{ public int[] twoSum(int[] arr, int num) { int i = 0; int j = arr.length - 1; while (arr[i] + arr[j] != num && j != i) { if (arr[i] + arr[j] > num)//太大了,那就把连个数字调小一点 j--; else i++; } int[] index = new int[2]; index[0] = i; index[1] = j; return index; }}
阅读全文
0 0
- 使用碰撞指针解决LeetCode问题:SortColor75,TwoSumII167,ReverseString344,reverseVowels345
- 解决hash碰撞问题
- 分离轴定理解决矩形碰撞问题
- 9、开链法解决散列表碰撞问题
- LeetCode 分类练习(3)—— 指针碰撞
- 解决在使用request得到属性的空指针问题
- swap.c -- 使用指针解决交换函数的问题
- 无锁队列-使用hazard指针解决ABA问题
- cocos2d碰撞问题(下)—乱码的解决
- 10、开链法解决散列表保存字典的碰撞问题
- 11、线性探测法解决散列表碰撞问题
- unity解决快速运动物体碰撞检测穿透问题
- 完全碰撞问题 台球碰撞
- 解决自定义securityMetadataSource不能使用依赖注入的问题,nullpointer问题,空指针问题
- 指针问题,暂未解决
- 野指针问题与解决
- 用指针解决约瑟夫问题
- 使用指针注意问题
- SQL Server 2016 详细安装过程
- Volatile关键字
- 【安全牛学习笔记】MANAGEMENT FRAME 管理帧
- 一个薅羊毛解决的框架,因为内存占用太大,没实验。。
- vue+webpack项目创建过程
- 使用碰撞指针解决LeetCode问题:SortColor75,TwoSumII167,ReverseString344,reverseVowels345
- 排列组合
- Python编程:从入门到实践(课后习题8)
- 内部类与外部类之间访问总结
- 测试模型之W模型
- 【错误】关于DateTable中 Cannot reinitialise DataTable问题
- 设计模式学习-简单工厂模式
- 编译
- python Tkinter学习