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

2021/5/13 20:29:07

本文主要是介绍为了去小米面试准备的算法题:求递增数组中相加等于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的元素对的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程