题解 | #继续(3n+1)猜想 (25)#

继续(3n+1)猜想 (25)

http://www.nowcoder.com/questionTerminal/b971bc19f8c54d85b0f89510d68e8eb1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        // 获取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = br.readLine().charAt(0) - '0';
        String[] strs = br.readLine().split(" ");
        ArrayList<Integer> list = new ArrayList<>();
        ArrayList<Integer> result = new ArrayList<>();

        // 处理数据
        for(int i = 0 ; i < strs.length ; i++) {
            int num = Integer.parseInt(strs[i]);
            if(n == 1) {    // 特殊情况:只有一个数
                System.out.println(num);
                return;
            }
            list.add(1);
            while(num != 1) {
                if(num % 2 == 0) {
                    num /= 2;
                } else {
                    num = (3 * num + 1) / 2;
                }
                list.add(num);
            }
        }
        // 查找list中不曾出现过的数
        for(int i = 0 ; i < strs.length ; i++) {
            int num = Integer.parseInt(strs[i]);
            if(!list.contains(num)) {
                result.add(num);
            }
        }

        // 降序输出
        Collections.sort(result);
        Collections.reverse(result);
        for(int i = 0 ; i < result.size() ; i++) {
            if(i == result.size() - 1) {
                System.out.print(result.get(i));
            } else {
                System.out.print(result.get(i) + " ");
            }
        }
    }
}
全部评论

相关推荐

刘湘_passion:太强了牛肉哥有被激励到
点赞 评论 收藏
分享
永远年轻_永远热泪盈眶:咱们真是苦难哥俩,我是浙大宁理,你是浙大城院,测试学历卡得不严,之前携程实习,只能说确实wlb,但携程学历厂,当时我mentor面试官,给我们看了他面试的六个人,全是研究生,学历最烂的一个都是杭电研究生,复旦华科一堆
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务