LeetCode算法题——找出第N个丑数

题目

编写一个程序,找出第 n 个丑数。
丑数就是只包含质因数 2, 3, 5 的正整数。   //只包含质因素2,3,5
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 ,15,是前 10 个丑数。
说明:  
1 是丑数。
n 不超过1690

 

代码实现

public class demo {

	public static int find(int target) {
		
		int index = 1;
		Map<Integer,Integer> map = new HashMap<>();
		List<Integer> list1 = new LinkedList<>();
		List<Integer> list2 = new LinkedList<>();
		
		list2.add(2);
		list2.add(3);
		list2.add(5);
		
		for(int i=1;i<1690;i++) {
			for(int j=2;j<i;j++) {
				if(i%j==0) {
					list1.add(j);
				}
			}
			/*System.out.println(list1);*/
			if(i>6&&list1.isEmpty()) {
				continue;
			}else {
				list1.removeAll(list2);
				boolean falg = true;
				boolean f = true;
				List<Integer>  end = new ArrayList<>();
				
				for(int x:list1) {
					for(int first=2;first<x;first++) {
						if(x%first==0) {
							end.add(first);
						}
					}
					if(end.isEmpty()){
						f = false;
						falg = false;
					}
					if(f==false) {
						break;
					}
					end.clear();
				}
				if(falg==true) {
					map.put(index,i);
					index++;
				}
				list1.clear();
			}
		}
		Set<Map.Entry<Integer,Integer>> set = map.entrySet();
		for(Entry<Integer,Integer> entry:set) {
			System.out.println(entry);
		}
		
		return map.get(target);
	}
	
	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入要查询的第几个丑数");
		int x = scanner.nextInt();
		System.out.println(find(x));
	}
}

 

上一篇:合并两个排序的链表


下一篇:Python day2