leetcode每日一题复盘(9.18~9.24)

leetcode 202 快乐数

leetcode每日一题复盘(9.18~9.24)_第1张图片

这道题一开始卡在如何判断无限循环,看了提示才想到用集合,对set的性质还是不够熟悉,没有抓住无限循环的内涵,它会形成类似于环这样的东西

对递归使不使用return很犹豫,如果有返回值时就应该使用return,否则内层函数的返回值无法返回给上一层的函数;使用了return更像是一直递,以最后一层的函数返回值作为整个函数的返回值,因为上一层函数已经return了,而没有使用return时上一层函数还没结束就递归到下一层函数,最后一层函数返回值不能返回给整个函数

快慢指针也是一种思路,如果快指针慢指针相遇且慢指针不等于1则不存在快乐数(因为存在环了),没有相遇则存在快乐数,快指针会先到1等慢指针到1

class Solution {
public:
    int bitSquareSum(int n) {
        int sum = 0;
        while(n > 0)
        {
            int bit = n % 10;
            sum += bit * bit;
            n = n / 10;
        }
        return sum;
    }
    
    bool isHappy(int n) {
        int slow = n, fast = n;
        do{
            slow = bitSquareSum(slow);
            fast = bitSquareSum(fast);
            fast = bitSquareSum(fast);
        }while(slow != fast);
        
        return slow == 1;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)