leetcode每日一题29
迪丽瓦拉
2025-06-01 19:14:27
0次

303. 区域和检索 - 数组不可变

愣是没看明白这个输入该咋处理
然后发现不用处理
…

class NumArray {
public:vector num;NumArray(vector& nums) {num=nums;}int sumRange(int left, int right) {int sum=0;for(int i=left;i<=right;i++)sum+=num[i];return sum;}
};

毫无闪光点的直白做法
这道题当然不是考察这个的
而是考察动态规划问题
在初始化对象时就可以计算前缀和sum,这样只要计算sum[right]-sum[left]就可以了

class NumArray {
public:vector sum;NumArray(vector& nums) {sum.resize(nums.size()+1);sum[0]=0;for(int i=1;isum[i]=sum[i-1]+nums[i-1];}}int sumRange(int left, int right) {return sum[right+1]-sum[left];}
};

主要是要处理好游标的问题,前缀和游标的含义是前项的和,从前0个和到前n个和,那么数组总的长度是n+1,和原始数组不一样
原来整型vector数组要加sum.resize(n)才能让sum[0]=0
否则就会报错
runtime error: reference binding to null pointer of type ‘int’
评论区大佬给出了另一个方法:懒计算

class NumArray {
private:vector sumArr;int count = 0;
public:NumArray(vector& nums) {sumArr = nums;}int sumRange(int i, int j) {if(count <= j){while(count <= j){sumArr[count] = sumArr[count] + (count > 0? sumArr[count - 1] : 0);++count;}}return sumArr[j] - (i > 0? sumArr[i - 1] : 0);}
};

326. 3 的幂

231题是2的幂

class Solution {
public:bool isPowerOfThree(int n) {if(n==0)return false;while(n%3==0)n/=3;if(n!=1)return false;return true;}
};

要求不用循环不用递归
这就需要用到数论的知识了。由于320 超过了 int 的范围了,所以 319 次方就是 int 类型中最大的值。
只需要判断 n 是否是 319 的约数即可。
但也需要判断n是否为负数的情况

class Solution {
public:bool isPowerOfThree(int n) {return n > 0 && 1162261467 % n == 0;}
};

338. 比特位计数

总觉得这道题似曾相识
评论区大佬的讲解:

分奇数和偶数:

偶数的二进制1个数超级简单,因为偶数是相当于被某个更小的数乘2,乘2怎么来的?在二进制运算中,就是左移一位,也就是在低位多加1个0,那样就说明dp[i] = dp[i / 2]
奇数稍微难想到一点,奇数由不大于该数的偶数+1得到,偶数+1在二进制位上会发生什么?会在低位多加1个1,那样就说明dp[i] = dp[i-1] + 1,当然也可以写成dp[i] = dp[i / 2] + 1

代码可写为

class Solution {
public:vector countBits(int num) {int i = 1;vector ans(num + 1);for (int i = 0; i <= num; i++) {if (i % 2 == 0) ans[i] = ans[i / 2];else ans[i] = ans[i / 2] + 1;}return ans;}
};

也是一道动态规划题

相关内容

热门资讯

10月1日至4日,湖北A级旅游... 10月4日晚,湖北省文化和旅游厅公布2026年国庆节第四天全省假日文旅市场情况:全省大部分地区天气由...
辽宁朝阳文旅赴京,邀请北京游客... 10月3日,正值国庆黄金周出游热潮高涨之际,辽宁省朝阳市文化旅游和广播电视局携全域优质文旅资源、特色...
“千万年薪招聘NPC”冲上热搜... 山西晋城司徒小镇豪掷3000万,计划招聘百名NPC(非玩家角色),最高开出千万年薪,凭借短视频热度未...
1390岁的塔长啥样?主播带你... 现代快报讯(记者 姜振军)“屏幕前的朋友们大家好,我是果果!”“大家好,我是提子!”10月4日下午,...
江苏淮安:老厂房变身国庆文旅新...   国庆期间,江苏省淮安市清江浦区红旗纸箱厂老厂房经改造,成为复古工业主题沉浸式互动剧场,上演沉浸式...
临港国庆享盛景 藏蓝护航假日游 国庆长假,临港地区文旅盛宴轮番上演,海昌海洋公园、耀雪冰雪世界、滴水湖烟花秀、国风嘉年华、上海天文馆...
国庆黄金周过半!成都市郫都区文... 封面新闻记者 秦怡10月4日,国庆黄金周进入“下半程”。封面新闻记者从成都市郫都区文体旅局了解到,今...
约满,限流!全国多处景区发布公... 来源:应急管理部今天是国庆假期第4天假期过半你在哪里耍?不少热门景区人潮涌动开启“人从众”模式四川、...
年轻态里玩转“电影+”,“星海... 海边草坪变身露天影院,市集、懒人沙发、海风交织成浪漫的观影记忆。10月1日至3日,“星海拾光·电影奇...
“演唱会+潮玩休闲” 来成都凤... 封面新闻记者 赖芳杰这个国庆,成都城北的氛围感被凤凰山体育公园拉满!10月3日,李健「万物安生时」巡...