美文网首页
2022-11-04 「754. 到达终点数字」

2022-11-04 「754. 到达终点数字」

作者: 柠香萌萌鸡 | 来源:发表于2022-11-03 09:42 被阅读0次

    今日中等题:https://leetcode.cn/problems/reach-a-number/

    今天题目其实是数学题,求移动次数,其实是求离target近可能近的情况下,还要左右移动几次。
    因为target无论正负,从0出发都是对称的,所以直接用Math.abs方法取模。
    然后通过循环累加到离target最近的情况,这个时候引用题解的图更直观:


    图片引自爪哇缪斯

    贴下我的答案:

    class Solution {
        public int reachNumber(int target) {
            int abst = Math.abs(target);
            int sum = 0;
            int start = 0;
            while (sum < abst) {
                start++;
                sum += start;    
            }
            int mid = sum - abst;
            if (mid % 2 == 0) {
                return start;
            }
            if (start % 2 == 0) {
                return start + 1;
            }
            else {
                return start +2;
            }
        }
    }
    

    再贴下大佬的答案:

    class Solution {
        public int reachNumber(int target) {
            int result = 0, num = 0, t = Math.abs(target); // 由于target有负数情况,为了统一计算逻辑,所以取绝对值
            // 直到num值大于等于t,并且num减t是偶数,才结束while循环
            while (num < t || (num - t) % 2 != 0) 
                num += ++result; // num=1+2+3+4+……
            return result;
        }
    }
    
    
    # 作者:muse-77
    # 链接:https://leetcode.cn/problems/reach-a-number/solution/by-muse-77-g0il/
    # 来源:力扣(LeetCode)
    # 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

    相关文章

      网友评论

          本文标题:2022-11-04 「754. 到达终点数字」

          本文链接:https://www.haomeiwen.com/subject/jtpytdtx.html