首页 > 其他 > 详细

论一道编程面试题解法

时间:2019-08-29 22:33:25      阅读:94      评论:0      收藏:0      [点我收藏+]

前言

今天面试的时候,面试官出了一道需手写的编程题。一个集合List<Integer> ,存储的值在(0~100),求所有的x+y=100的组合。并打印出来。题目不难,平时面向IDE编程,且当时时间比较紧急,当时没有写好。在家调试,写了两种解法,如下。(一个非递归,一个递归)测试通过

解法

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

/**
 * @author LWX-PC
 * @version 1.0
 * @class Main
 * @date 2019/8/29 19:03
 * @description
 */
public class Main {
    public static void main(String[] args) {
        Integer[] arr=new Integer[]{0,22,100,67,1,99,1,99,55,66,45};
        System.out.println(Arrays.toString(arr));
//printNum(Arrays.asList(arr));
        printNum2(new ArrayList<Integer>(Arrays.asList(arr)));
    }

    public static void printNum(List<Integer> list){
        List<Integer> indexs=new ArrayList<>();
       out:for(int i=0,length=list.size();i<length-1;i++){
            if(!indexs.contains(i)){
                int temp=list.get(i);
                for(int j=i+1;j<length;j++){
                    if(!indexs.contains(j)){
                        int temp2=list.get(j);
                        if((temp+temp2)==100){
                            indexs.add(i);
                            indexs.add(j);
                            System.out.println(indexs);
                            System.out.println(temp + "+" + temp2 + "=100");
                            continue out;
                        }
                    }
                }
            }
        }
    }


    public static  void printNum2(List<Integer> list){
        boolean flag=false;
        if(list.size()>=2){
            out:for(int i=0,length=list.size();i<length-1;i++){
                int temp=list.get(i);
                for(int j=i+1;j<length;j++){
                    int temp2=list.get(j);
                    if((temp+temp2)==100){
                        System.out.println(temp + "+" + temp2 + "=100");
                        list.remove(i);
                        list.remove(j-1);
                        flag=true;
                        break out;
                    }
                }
                if(!flag){
                    list.remove(i);
                    break out;
                }
            }
            printNum2(list);
        }
    }

 技术分享图片

 每一次被虐都是打怪升级的过程

论一道编程面试题解法

原文:https://www.cnblogs.com/geduocoding/p/11431794.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!