查找闭合范围之间的奇数

我正在做一个代码挑战,给定两个整数l和r,我必须打印i和r之间的所有奇数(包括i和r)。该函数必须返回一个整数数组,表示 l 和 r 之间的奇数。


这就是我到目前为止所拥有的


 static List<Integer> oddNumbers(int l, int r) {

    List<Integer> list1 = new ArrayList<>();

    if ((r > l) && (l >= 1) && (r <= 100000)) {

        for (int i = tmp; tmp < r; i++) {

            if (l % 2 == 0)

               l = l + 1;              

            list1.add(l);

            l = l + 2;

        }

    }

    return list1;

}

但是,我收到了几个这样的错误


Compiler Message

Wrong Answer

Your Output (stdout)

Output hidden

对此有什么想法吗?在挑战网站的QA上,似乎与Corner案例问题有关。


慕莱坞森
浏览 153回答 4
4回答

汪汪一只猫

我建议使用以下代码:public static List<Integer> getOdd(int l, int r) {&nbsp; &nbsp; List<Integer> odd = new ArrayList<Integer>();&nbsp; &nbsp; if (l % 2 == 0)&nbsp; &nbsp; &nbsp; &nbsp; l++;&nbsp; &nbsp; while(l <= r) {&nbsp; &nbsp; &nbsp; &nbsp; odd.add(l);&nbsp; &nbsp; &nbsp; &nbsp; l += 2;&nbsp; &nbsp; }&nbsp; &nbsp; return odd;}

交互式爱情

正如评论中提到的,您在循环中排除了,并且可能返回了错误的数据结构?r此外,您的代码所做的远远超出了它需要的你只需要一个循环你根本不需要 - 只需修改tmpl你不需要所有的 if/else 块我建议如下:static int[] oddNumbers(int l, int r) {&nbsp; &nbsp; List<Integer> list1 = new ArrayList<>();&nbsp; &nbsp; if (l % 2 == 0) l++;&nbsp; &nbsp; for(; l <= r; l += 2) {&nbsp; &nbsp; &nbsp; &nbsp; list1.add(l);&nbsp; &nbsp; }&nbsp; &nbsp; return list1.stream().mapToInt(i->i).toArray(); // https://stackoverflow.com/a/23945015/2554605}您可以根据挑战要求添加回来是否需要它,但我不是说这是必要的(请注意,我有,而不仅仅是为了涵盖这种情况)。if ((r >= l) && (l >= 1) && (r <= 100000))r >= lr > lr == l同样,如果您真的被允许返回而不是 ,那么就像您拥有的那样。List<Integer>int[]return list1;

人到中年有点甜

与其除以2并检查余数是0还是1,不如按位和with,如果数字是奇数,它将看起来像这样,它降低了复杂性。1(&1)((number&1)==1)

繁花如伊

此版本应该可以正常工作&nbsp;static List<int> oddNumbers(int l, int r)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; List<int> list1 = new List<int>();&nbsp; &nbsp; &nbsp; &nbsp; if ((r > l) && (l >= 1) && (r <= 100000))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int tmp = l % 2 == 0 ? l + 1 : l;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = tmp; i < r; i += 2)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list1.Add(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return list1;&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java