[杨小白]_leetcode_力扣第 315 场周赛-力扣-第三题

163 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

前言

小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!

力扣第 315 场周赛-力扣

力扣第 315 场周赛-力扣

a了三题,第一题第二题比较简单,几分钟就做了。第三题没想到暴力可以过,真是想了半天,还wa了一次。第四题坐牢。

因为第三题耽误太长时间,排名贼靠后,又要掉分了!!

image.png

第314双周赛的排名 image.png

第88双周赛的排名 image.png

第313周赛的排名

image.png

2443. 反转之后的数字和

给你一个 非负 整数 num 。如果存在某个 非负 整数 k 满足 k + reverse(k) = num  ,则返回 true ;否则,返回 false 。

reverse(k) 表示 k 反转每个数位后得到的数字。

示例 1

  • 输入: num = 443
  • 输出: true
  • 解释: 172 + 271 = 443 ,所以返回 true 。

示例 2

  • 输入: num = 63
  • 输出: false
  • 解释: 63 不能表示为非负整数及其反转后数字之和,返回 false 。

示例 3

  • 输入: num = 181
  • 输出: true
  • 解释: 140 + 041 = 181 ,所以返回 true 。注意,反转后的数字可能包含前导零。

提示

  • 0 <= num <= 105

代码

这里参考第二题计算反转数字的方法,暴力查询,居然可以过,,,,,真是无大语。直接3000多名就是因为这个。

class Solution {
    public boolean sumOfNumberAndReverse(int num) {
        for (int i = num; i >= 0; i--) {
            StringBuilder sb = new StringBuilder();
            sb.append(i);
            sb = sb.reverse();
            if (i + Integer.parseInt(sb.toString()) == num) {
                return true;
            }
        }
        return false;
    }
}

耗时

image.png

class Solution {
    public boolean sumOfNumberAndReverse(int num) {
        if (num == 0) return true;
        for (int i = 1;i < num;i++){
            if (i + reverse(i) == num){
                return true;
            }
        }
        return false;
    }

    public int reverse(int x){
        int res = 0;
        while (x != 0){
            res = res * 10 + x % 10;
            x /= 10;
        }
        return res;
    }
}

耗时可见,数字算法比字符串算法要快得多。

image.png

第一题连接如下-2441. 与对应负数同时存在的最大正整数

2441. 与对应负数同时存在的最大正整数

第二题连接如下-2442.反转之后不同整数的数目

2442.反转之后不同整数的数目

3.结束

又是掉分的一场周赛,第三题不应该困扰那么长时间的。我当时看好多人都做出来了,想的是,是不是直接return false或者是什么啊,还wa了一次。gogogo,刷题刷题,每天一道,三年1000道!!!!