Discuss / Java / 作业一作业二

作业一作业二

Topic source

作业一:找有序list缺失的数字

package com.itranswarp.learnjava;

import java.util.*;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 构造从start到end的序列:
        final int start = 10;
        final int end = 20;
        List<Integer> list = new ArrayList<>();
        for (int i = start; i <= end; i++) {
            list.add(i);
        }
        // 随机删除List中的一个元素:
        int removed = list.remove((int) (Math.random() * list.size()));
        int found = findMissingNumber(start, end, list);
        System.out.println(list.toString());
        System.out.println("missing number: " + found);
        System.out.println(removed == found ? "测试成功" : "测试失败");
        

	}

	private static int findMissingNumber(int start, int end, List<Integer> list) {
		// TODO Auto-generated method stub
		for(int i = 0;i<list.size();i++) {
			if(list.get(i)!=(end - start +i)) {
				return (end - start +i);
				//continue;
			}
			if((i==end -start - 1)&&(list.get(i)!=end)) {
				return end;
			}
		}
		return 0;
	}

}

作业二:找无序list缺失的数字

package com.itranswarp.learnjava;

import java.util.*;

/**
 * Learn Java from https://www.liaoxuefeng.com/
 * 
 * @author liaoxuefeng
 */
public class Main {
	public static void main(String[] args) {
		// 构造从start到end的序列:
		final int start = 10;
		final int end = 20;
		List<Integer> list = new ArrayList<>();
		for (int i = start; i <= end; i++) {
			list.add(i);
		}
		// 洗牌算法suffle可以随机交换List中的元素位置:
		Collections.shuffle(list);
		// 随机删除List中的一个元素:
		int removed = list.remove((int) (Math.random() * list.size()));
		System.out.println("排序前的数组:");
		System.out.println(list.toString());
		int found = findMissingNumber(start, end, list);
		System.out.println("missing number: " + found);
		System.out.println(removed == found ? "测试成功" : "测试失败");
	}

	/**
	 * TODO: 找出从start到end的缺失的数字并返回
	 */
	static int findMissingNumber(int start, int end, List<Integer> list) {
		Integer[] it = list.toArray(new Integer[list.size()]);
		Arrays.sort(it);
		System.out.println("排序后的数组:");
		System.out.println(Arrays.deepToString(it));
		for(int i = 0;i<it.length;i++) {
			if(it[i]!=(end - start +i)) {
				return (end - start +i);
				//continue;
			}
			if((i==end -start - 1)&&(it[i]!=end)) {
				return end;
			}
		}
		return 0;
	}
}


  • 1

Reply