当前位置: 首页 > wzjs >正文

学做婴儿衣服的网站中央人民政府网

学做婴儿衣服的网站,中央人民政府网,长沙网站建设长沙建设银行,网站虚拟主机内存不足能不能链接9. 1652.拆炸弹(简单&#xff0c;学习) 1652. 拆炸弹 - 力扣&#xff08;LeetCode&#xff09; 思想 为了获得正确的密码&#xff0c;你需要替换掉每一个数字。所有数字会 同时 被替换。 如果 k > 0 &#xff0c;将第 i 个数字用 接下来 k 个数字之和替换。如果 k < 0…
9. 1652.拆炸弹(简单,学习)

1652. 拆炸弹 - 力扣(LeetCode)

思想

为了获得正确的密码,你需要替换掉每一个数字。所有数字会 同时 被替换。

  • 如果 k > 0 ,将第 i 个数字用 接下来 k 个数字之和替换。
  • 如果 k < 0 ,将第 i 个数字用 之前 k 个数字之和替换。
  • 如果 k == 0 ,将第 i 个数字用 0 替换。
    2.我的:
    根据k的不同分三类情况讨论,先把 ∣ k ∣ |k| k长度窗口的和求出来,然后根据k的正负向右或向左滑动窗口。
    注意向左滑动时要+n再取余,i=(i-1+n)%n
    3.学习
    全部向右滑动,但是因为k的正负导致窗口在i的左侧或右侧,即**开始窗口位置不同,但保证窗口右移,从0开始遍历待赋值的元素i:
  • k>0,窗口为[1,k+1)
  • k<0,窗口为[n-|k|,n) **通过记录一个变量right来维护[right-k,right)`的窗口,但是保持right++**(而不是right=(right+1)%n,因为要始终保持right-k>0),但是sum更新的时候通过%n将`[right-k,right)`映射到对应范围内即可
代码

1.我的
c++:

class Solution {
public:vector<int> decrypt(vector<int>& code, int k) {int n = code.size();vector<int> res(n);if (k == 0) {for (int i = 0; i < n; ++i)res[i] = 0;} else if (k > 0) {long long sum = 0;for (int i = 0; i < k - 1; ++i)sum += (long long)code[i];int i = k - 1;int cnt = 0;for (;; i = (i + 1) % n) {sum += (long long)code[i];if ((i - k + n) % n == n - 1) {cnt++;if (cnt == 2)break;}res[(i - k + n) % n] = sum;sum -= (long long)code[(i - k + 1 + n) % n];}} else {long long sum = 0;int len = -1 * k;for (int i = n - 1; i > n - len; --i)sum += (long long)code[i];int i = n - len;int cnt = 0;for (;; i = (i - 1 + n) % n) {sum += (long long)code[i];if ((i + len + n) % n == 0) {cnt++;if (cnt == 2)break;}res[(i + len + n) % n] = sum;sum -= (long long)code[(i + len - 1 + n) % n];}}return res;}
};

2.学习:
c++:

class Solution {
public:vector<int> decrypt(vector<int>& code, int k) {int n = code.size();vector<int> res(n);int right = k > 0 ? k + 1 : n;k = abs(k);// 初始窗口和long long sum = 0;for (int i = right - k; i < right; ++i)sum += code[i];// 遍历赋值元素for (int i = 0; i < n; ++i) {res[i] = sum;sum -= code[(right - k + n) % n];sum += code[right % n];right++;}return res;}
};
10. 1176.健身计划评估(简单)

1176. 健身计划评估 - 力扣(LeetCode)

思想

1.为了更好地评估这份计划,对于卡路里表中的每一天,你都需要计算他 「这一天以及之后的连续几天」 (共 k 天)内消耗的总卡路里 T:

  • 如果 T < lower,那么这份计划相对糟糕,并失去 1 分;
  • 如果 T > upper,那么这份计划相对优秀,并获得 1 分;
  • 否则,这份计划普普通通,分值不做变动。
代码

c++:

class Solution {
public:int dietPlanPerformance(vector<int>& calories, int k, int lower,int upper) {int n = calories.size();int res = 0;long long sum = 0;for (int i = 0; i < n; ++i) {sum += calories[i];if (i < k - 1)continue;if (sum > upper)res++;else if (sum < lower)res--;sum -= calories[i - k + 1];}return res;}
};
11. 1100.长度为K的无重复字符子串

1100. 长度为 K 的无重复字符子串 - 力扣(LeetCode)

思想

1.给你一个字符串 S,找出所有长度为 K 且不含重复字符的子串,请你返回全部满足要求的子串的 数目
2.利用map来储存字符个数,mp.size()==k说明无重复字符

代码

c++:

class Solution {
public:int numKLenSubstrNoRepeats(string s, int k) {int res = 0;map<int, int> mp;for (int i = 0; i < s.size(); ++i) {mp[s[i]]++;if (i < k - 1)continue;if (mp.size() == k)res++;mp[s[i - k + 1]]--;if (mp[s[i - k + 1]] == 0)mp.erase(s[i - k + 1]);}return res;}
};

1.mp.size()统计key的数量
2.mp.erase(key),删除键值对

http://www.dtcms.com/wzjs/190259.html

相关文章:

  • wordpress 合法评论seo报告
  • 代做外国空间网站口碑营销案例2021
  • 佛山网站建设的品牌温州seo博客
  • 做网站网页排版错误宁波怎么优化seo关键词
  • 网站网络拓扑图网站推广app
  • wordpress 样式表南京百度推广优化
  • 山东省城乡和住房建设厅网站网上怎么找客户资源
  • 美国做科普的网站搜索引擎快速优化排名
  • 服务器如何配置php网站百度信息流
  • gateface做网站益阳网站seo
  • 网站建设与网页设计毕业论文培训推广 seo
  • 河南住房与城乡建设部网站网站优化推广软件
  • 做电台需要的文章从哪个网站找西安疫情最新数据消息中高风险地区
  • 网站开发与经营怎么注册域名
  • 做网站服务器租一年多少钱百度大数据
  • 网站的空间域名网站百度收录批量查询
  • 在哪做网站建设10常用的网络营销方法
  • wordpress阿里百秀4.1百度seo关键词优化推荐
  • 电池网站建设 中企动力公司怎么在网上推广
  • 忘记了wordpress登录密码企业seo的措施有哪些
  • 威海哪家网站做的好百度数字人内部运营心法曝光
  • 十大经典口碑营销案例周口网站seo
  • 高端大气网站建设seo服务外包
  • 南昌网站建设利润网站推广公司电话
  • 微信公众号的子菜单网页怎么制作汉川seo推广
  • 电子请柬制作软件app深圳百度seo公司
  • 昌平区网站建设如何做网站推广广告
  • 网站开发和网页开发的区别想做电商应该怎么入门
  • 图片头像设计制作优化搜索引擎
  • 网站美化怎么做搜索百度