为了去小米面试准备的算法题:求递增数组中相加等于10的元素对

Posted 坚守梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为了去小米面试准备的算法题:求递增数组中相加等于10的元素对相关的知识,希望对你有一定的参考价值。

 

使用双指针,由于是单调递增的,所以数对是不可能重复的。

 

import java.util.ArrayList;
import java.util.List;

public class TwoNumSum {
    public static void main(String[] args) {
        int nums[]={1,2,3,4,5,6,7,8,9,10};
        List<NumberPair> theTwoNums = new TwoNumSum().findTheTwoNums(nums, 10);
        theTwoNums.forEach(x->System.out.println(x.num1+","+x.num2));
    }

    public List<NumberPair> findTheTwoNums(int[] nums,int target){
        List<NumberPair> list=new ArrayList<>();
        int left=0;
        int right=nums.length-1;
        while(left<right){
            if(nums[left]+nums[right]==target){
                list.add(new NumberPair(nums[left],nums[right]));
                left++;
                right--;
            }else if(nums[left]+nums[right]<target){
                left++;
            }else if(nums[left]+nums[right]>target){
                right--;
            }
        }
        return list;
    }


}

class NumberPair{
    public int num1;
    public int num2;
    public NumberPair(int num1,int num2){
        this.num1=num1;
        this.num2=num2;
    }
}

 

以上是关于为了去小米面试准备的算法题:求递增数组中相加等于10的元素对的主要内容,如果未能解决你的问题,请参考以下文章

Java面试题:在一个递增的数组里面,找出任意两个数的和等于100,编写程序输出这些数对,可以假设数组中不存在重复元素

算法题:三个数相加等于某个特定值

面试准备之【数据结构】1——图

冲刺大厂每日算法&面试题,动态规划21天——第十八天

小米面试前算法准备:leetcode88,合并两个有序数组

[经典面试题]二分查找问题汇总