为了账号安全,请及时绑定邮箱和手机立即绑定

查找闭合范围之间的奇数

查找闭合范围之间的奇数

慕莱坞森 2022-08-03 15:17:23
我正在做一个代码挑战,给定两个整数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 MessageWrong AnswerYour Output (stdout)Output hidden对此有什么想法吗?在挑战网站的QA上,似乎与Corner案例问题有关。
查看完整描述

4 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

我建议使用以下代码:


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

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

    if (l % 2 == 0)

        l++;

    while(l <= r) {

        odd.add(l);

        l += 2;

    }

    return odd;

}


查看完整回答
反对 回复 2022-08-03
?
交互式爱情

TA贡献1712条经验 获得超3个赞

正如评论中提到的,您在循环中排除了,并且可能返回了错误的数据结构?r

此外,您的代码所做的远远超出了它需要的

  • 你只需要一个循环

  • 你根本不需要 - 只需修改tmpl

  • 你不需要所有的 if/else 块

我建议如下:

static int[] oddNumbers(int l, int r) {

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

    if (l % 2 == 0) l++;

    for(; l <= r; l += 2) {

        list1.add(l);

    }

    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;


查看完整回答
反对 回复 2022-08-03
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

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



查看完整回答
反对 回复 2022-08-03
?
繁花如伊

TA贡献2012条经验 获得超12个赞

此版本应该可以正常工作


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

    {

        List<int> list1 = new List<int>();

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

        {

            int tmp = l % 2 == 0 ? l + 1 : l;            

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

            {

                list1.Add(i);

            }


        }

        return list1;

    }


查看完整回答
反对 回复 2022-08-03
  • 4 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信