zoukankan      html  css  js  c++  java
  • 论一道编程面试题解法

    前言

    今天面试的时候,面试官出了一道需手写的编程题。一个集合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);
            }
        }

     

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

  • 相关阅读:
    sql当前行数据和之前行数据相加减循环处理
    Sql 查询库、表、列名的语句
    sql 特殊字符替换
    pandas 篇
    JAVA学习--面向对象的特征二:继承性
    JAVA学习--super使用
    JAVA学习--方法的参数传递
    JAVA学习--可变个数的形参的方法
    JAVA学习--面向对象思想的落地法则
    JAVA学习--方法的重载
  • 原文地址:https://www.cnblogs.com/geduocoding/p/11431794.html
Copyright © 2011-2022 走看看