这次第三题有点意思,我忘了还可以这样,失误失误,因为第四题是会的,只是时间不够,不然名次不会只是95

第一题
https://leetcode-cn.com/problems/prime-arrangements/
请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;你需要返回可能的方案总数。
让我们一起来回顾一下「质数」:质数一定是大于 1 的,并且不能用两个小于它的正整数的乘积来表示。
由于答案可能会很大,所以请你返回答案 模 mod 10^9 + 7 之后的结果即可。

这道题开始理解错了,后来才理解,就是质数在质数位置上,合数在合数位置上,其实就是质数和合数数目分别A计算,然后相乘

public int numPrimeArrangements(int n) {int k = 0;for (int i = 2; i <= n; i++) {if (zhi(i)) {k++;}}long ans = 1;for (int i = 1; i <= n-k; i++) {ans *= i;ans = ans % 1000000007;}for (int i = 1; i <= k; i++) {ans *= i;ans = ans % 1000000007;}return (int) ans;
}private boolean zhi(int k) {for (int i = 2; i <= Math.sqrt(k); i++) {if (k % i == 0) {return false;}}return true;
}

第二题
https://leetcode-cn.com/problems/diet-plan-performance/
你的好友是一位健身爱好者。前段日子,他给自己制定了一份健身计划。现在想请你帮他评估一下这份计划是否合理。
他会有一份计划消耗的卡路里表,其中 calories[i] 给出了你的这位好友在第 i 天需要消耗的卡路里总量。
计划的统计周期通常是 k 天,你需要计算他在每一段连续的 k 天内消耗的总卡路里 T:
如果 T < lower,那么这份计划相对糟糕,并失去 1 分;
如果 T > upper,那么这份计划相对优秀,并获得 1 分;
否则,这份计划普普通通,分值不做变动。
请返回统计完所有 calories.length 天后得到的总分作为评估结果。
注意:总分可能是负数。

输入:calories = [1,2,3,4,5], k = 1, lower = 3, upper = 3
输出:0
解释:calories[0], calories[1] < lower 而 calories[3], calories[4] > upper, 总分 = 0.

public int dietPlanPerformance(int[] calories, int k, int lower, int upper) {int res = 0;int ans = 0;for (int i = 0; i < k; i++) {ans += calories[i];}if (ans < lower) {res--;} else if (ans > upper) {res++;}for (int i = k; i < calories.length; i++) {ans += calories[i];ans -= calories[i - k];if (ans < lower) {res--;} else if (ans > upper) {res++;}}return res;
}

第三题
https://leetcode-cn.com/problems/can-make-palindrome-from-substring/
给你一个字符串 s,请你对 s 的子串进行检测。
每次检测,待检子串都可以表示为 queries[i] = [left, right, k]。我们可以 重新排列 子串 s[left], …, s[right],并从中选择 最多 k 项替换成任何小写英文字母。
如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为 true,否则结果为 false。
返回答案数组 answer[],其中 answer[i] 是第 i 个待检子串 queries[i] 的检测结果。
注意:在替换时,子串中的每个字母都必须作为 独立的 项进行计数,也就是说,如果 s[left…right] = “aaa” 且 k = 2,我们只能替换其中的两个字母。(另外,任何检测都不会修改原始字符串 s,可以认为每次检测都是独立的)

输入:s = “abcda”, queries = [[3,3,0],[1,2,0],[0,3,1],[0,3,2],[0,4,1]]
输出:[true,false,false,true,true]
解释:
queries[0] : 子串 = “d”,回文。
queries[1] : 子串 = “bc”,不是回文。
queries[2] : 子串 = “abcd”,只替换 1 个字符是变不成回文串的。
queries[3] : 子串 = “abcd”,可以变成回文的 “abba”。 也可以变成 “baab”,先重新排序变成 “bacd”,然后把 “cd” 替换为 “ab”。
queries[4] : 子串 = “abcda”,可以变成回文的 “abcba”。

这道题就是我说的,数组也可以这么玩?就是求一段的和时候,先求全部和

int[][] ress;public List<Boolean> canMakePaliQueries(String s, int[][] queries) {List<Boolean> res = new ArrayList<Boolean>();ress = new int[s.length() + 1][26];for (int i = 0; i < s.length(); i++) {for (int j = 0; j < 26; j++) {ress[i + 1][j] = ress[i][j];}ress[i + 1][s.charAt(i) - 'a']++;}for (int i = 0; i < queries.length; i++) {res.add(getRes(s, queries[i][0], queries[i][1], queries[i][2]));}return res;
}private Boolean getRes(String s, int start, int end, int n) {if (n >= 13) {return true;}int k = 0;int[] ans = new int[26];for (int i = 0; i < ans.length; i++) {ans[i] = ress[end + 1][i] - ress[start][i];}for (int i = 0; i < ans.length; i++) {if (ans[i] % 2 != 0) {k++;}}return k / 2 <= n;
}

第四题
https://leetcode-cn.com/problems/number-of-valid-words-for-each-puzzle/
外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧。
字谜的迷面 puzzle 按字符串形式给出,如果一个单词 word 符合下面两个条件,那么它就可以算作谜底:
单词 word 中包含谜面 puzzle 的第一个字母。
单词 word 中的每一个字母都可以在谜面 puzzle 中找到。
例如,如果字谜的谜面是 “abcdefg”,那么可以作为谜底的单词有 “faced”, “cabbage”, 和 “baggage”;而 “beefed”(不含字母 “a”)以及 “based”(其中的 “s” 没有出现在谜面中)。
返回一个答案数组 answer,数组中的每个元素 answer[i] 是在给出的单词列表 words 中可以作为字谜迷面 puzzles[i] 所对应的谜底的单词数目。

示例:
输入:
words = [“aaaa”,“asas”,“able”,“ability”,“actt”,“actor”,“access”],
puzzles = [“aboveyz”,“abrodyz”,“abslute”,“absoryz”,“actresz”,“gaswxyz”]
输出:[1,1,3,2,4,0]
解释:
1 个单词可以作为 “aboveyz” 的谜底 : “aaaa”
1 个单词可以作为 “abrodyz” 的谜底 : “aaaa”
3 个单词可以作为 “abslute” 的谜底 : “aaaa”, “asas”, “able”
2 个单词可以作为 “absoryz” 的谜底 : “aaaa”, “asas”
4 个单词可以作为 “actresz” 的谜底 : “aaaa”, “asas”, “actt”, “access”
没有单词可以作为 “gaswxyz” 的谜底,因为列表中的单词都不含字母 ‘g’。

提示:
1 <= words.length <= 10^5
4 <= words[i].length <= 50
1 <= puzzles.length <= 10^4
puzzles[i].length == 7
words[i][j], puzzles[i][j] 都是小写英文字母。
每个 puzzles[i] 所包含的字符都不重复。

重要的是,puzzles[i].length == 7这个提示,这样我就可以把谜底的所有可能(int值)列出来

Map<Integer, Integer> scoreMap = new HashMap<Integer, Integer>();public List<Integer> findNumOfValidWords(String[] words, String[] puzzles) {for (int i = 0; i < words.length; i++) {int score = getScore(words[i]);int value = 1;if (scoreMap.containsKey(score)) {value += scoreMap.get(score);}scoreMap.put(score, value);}List<Integer> res = new ArrayList<Integer>();for (int i = 0; i < puzzles.length; i++) {res.add(getAns(puzzles[i]));}return res;
}private int getScore(String word) {int ans = 0;for (int i = 0; i < word.length(); i++) {ans |= 1 << (word.charAt(i) - 'a');}return ans;
}private int getAns(String puzz) {int ans = 0;int key = 1 << (puzz.charAt(0) - 'a');for (int i = 0; i < (1 << (puzz.length() - 1)); i++) {int k = key;for (int j = 1; j < puzz.length(); j++) {if ((i & (1 << (j - 1))) != 0) {k += (1 << (puzz.charAt(j) - 'a'));}}if (scoreMap.containsKey(k)) {ans += scoreMap.get(k);}}return ans;
}

leetcode的一些已经写的觉得有意思的其他题目
https://blog.csdn.net/qq_33321609/article/category/9012437
如果有我没有写博客的其他题目需要讨论,欢迎评论,一起探讨

leetcode第152周赛相关推荐

  1. 前端工程师的 LeetCode 之旅 -- 周赛 185

    01 重新格式化化字符串 题目描述[Easy] 给你一个混合了数字和字母的字符串 s,其中的字母均为小写英文字母. 请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同.也就是说,字母后面应该跟 ...

  2. Leetcode 第152场周赛5174:健身计划评估

    题目描述 你的好友是一位健身爱好者.前段日子,他给自己制定了一份健身计划.现在想请你帮他评估一下这份计划是否合理. 他会有一份计划消耗的卡路里表,其中 calories[i] 给出了你的这位好友在第  ...

  3. leetcode 273场周赛 Problem-C

    文章目录 题目 思路 AC代码 后言 题目 5965. 相同元素的间隔之和 思路 思路是利用前缀.后缀数组来减少计数问题,可惜做的时候TLE了. AC代码 class Solution {public ...

  4. LeetCode 89 双周赛

    2437. 有效时间的数目 给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 "hh:mm" .最早 可能的时间是 "00:00" ...

  5. LeetCode 202次周赛 1553. Minimum Number of Days to Eat N Oranges

    1553. Minimum Number of Days to Eat N Oranges 题目描述 思路分析 弱智动态规划 可行的动态规划 直觉上正确的思路 代码实现 证明正确性 复杂度分析 总结 ...

  6. 【LeetCode】152. Maximum Product Subarray

    题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...

  7. LeetCode第280周赛回顾

    6004. 得到 0 的操作数 给你两个 非负 整数 num1 和 num2 . 每一步 操作 中,如果 num1 >= num2 ,你必须用 num1 减 num2 :否则,你必须用 num2 ...

  8. LeetCode第319周赛题解

    一如既往的一题选手 第一题 6233. 温度转换 难度: 简单 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位. 你需要将摄氏度转换为 开氏度( ...

  9. 矩阵中和能被 K 整除的路径 leetcode第314周赛第四题

    给你一个下标从 0 开始的 m x n 整数矩阵 grid 和一个整数 k .你从起点 (0, 0) 出发,每一步只能往 下 或者往 右 ,你想要到达终点 (m - 1, n - 1) . 请你返回路 ...

最新文章

  1. 什么是A记录、MX记录、CNAME记录
  2. Spring-bean的作用域
  3. JAVA并发-从缓存一致性说volatile 讲的很好
  4. 对于java反射的理解
  5. Atomic Integer 原理分析-getAndIncrement
  6. 一条数据的HBase之旅,简明HBase入门教程1:开篇
  7. linux---編輯器
  8. mongooes怎么链接mysql_如何使用Node + Mongoose连接远程MongoDB数据库
  9. 中国农业银行计算机专业笔试题,中国农业银行笔试题库
  10. 青岛科技大学计算机历年真题,青岛科技大学计算机组成原理补考试卷(计算机)...
  11. leetcode 买卖股票的最佳时机含手续费(Java)
  12. from functools import reduce——从典型实例做抓手看reduce函数使用
  13. git push failed to push some refs to xxxx 失败与解决方法
  14. 重新思考人和计算机的关系
  15. 戴尔笔记本怎么安装统信uos系统?戴尔笔记本安装统信uos+win双系统
  16. 共享花店App开发亮点解析
  17. 8 月 “图无处不在” 线上直播开始报名啦
  18. mysql没有及时启动1053_mysql 启动 错误1053:服务没有及时响应启动或者控制请求
  19. 程序人生 - 学无止境
  20. 前端ES6的语法整理

热门文章

  1. 论文:Ordered Neurons: Integrating Tree Structures into Recurrent Neural Networks
  2. 计算机学业水平考试成绩查询系统,高中学业水平考试成绩查询系统
  3. 数据对比分析法,看这篇就够了!
  4. Gutenberg(古腾堡): WordPress全新核心编辑器插件
  5. 分数的大小比较优秀教案_六年级分数大小比较教案
  6. 智慧屏是什么 荣耀智慧屏有什么用
  7. python弹球游戏实验报告_弹珠小游戏课程设计实验报告
  8. 网吧万兆到桌面服务器配置,万兆到桌面,网吧就用维盟星网全万兆!
  9. python循环结构练习(五)—— 模拟银行ATM存款取款
  10. 漫谈Hadoop的思想之源:Google