每日算法(二十一)-java给定一个数组,求是否存在数组里的两个元素相加等于目标数并求出下标(三种方法)
2019-06-01 16:37
591 查看
标题每日算法(二十一)-java给定一个数组,求是否存在数组里的两个元素相加等于目标数并求出下标(三种方法)
第一种方法,直接双遍历,想等就输出
public static void twosum(int arr[], int target){ for(int i=0;i<arr.length-1;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]+arr[j]==target){ System.out.println(arr[i]+"+"+arr[j]+"="+target); System.out.println("第一个下标为:"+i+"第二个下标为:"+j); }else{ System.out.println("无"); } } } }
第二种方法二分查找,先排序,然后依次比较
public static int returnnum(int arr[], int target){ Arrays.sort(arr); int left=0; int right=arr.length-1; while(left!=right){ if(arr[left]+arr[right]<target){ left++; }else{ right--; }if(arr[left]+arr[right]==target){ System.out.println(arr[left]+"+"+arr[right]+"="+target); System.out.println("第一个下标为:"+left+"第二个下标为:"+right); } } return target; }
第三种方法,hash,把输入依次放入,之后用目标数减去第一个数的结果在表里面去找有就输出
public static int[] hashsum(int arr[],int target){ int temp[]=new int[2]; HashMap<Integer, Integer> map=new HashMap<>(); for(int i=0;i<arr.length;i++){ map.put(arr[i],i); } for(int i=0;i<arr.length;i++){ int other=target-arr[i]; if(map.containsKey(other)){ temp[0]=i; temp[1]=map.get(other); break; } } return temp; }
相关文章推荐
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 题目1.请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个证书x时,判断出S中是否存在有两个其和等于x的元素。
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- java每日一题:给定一个整数数组arr和整数target,返回两个索引值,使得这两个索引值对应的整数的和等于target。(arr中有且仅有一组)
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 设计一个算法找到数组中两个元素相加等于指定数的所有组合
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 【Java】给定有向图,设计一个算法,找出两个结点之间是否存在一条路径
- 如果一个数组A[1…n]中超过半数的元素都相同时,该数组被称为含有一个主元素。给定一个数组,设计一个有效算法,确定该数组中是否含有一个主元素。如果有,找出这个元素。该数组的元素之间不一定存在顺序,如整
- 给定一个数组和一个数字,给定的数组里是否存在两个数字之和等于给定的数字
- 迅速找出数组a中是否存在相加后等于整数x的两个元素
- 判断数组中是否存在两个元素之和等于给定数值
- java__给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 请确认你是否能够跳跃到数组的最后一个下标。
- 2.3-7 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字
- leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组
- 从数组中找出一对元素,其和是一个给定的目标数字。假设数组中只存在一个符合要求的数值对,返回这些数值的下标
- 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
- 【算法导论学习-005】整数集合S中是否存在两个数等于给定的一个整数
- 算法入门---判断集合S中是否存在两个其和等于x的元素