
刷题
_少说话_多做事_
海底月是天上月,眼前人是心上人,向来心是看客心,奈何人是剧中人
展开
-
把数组排成最小的数
题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。思路特殊排序代码原创 2022-06-17 09:36:56 · 136 阅读 · 0 评论 -
单链表的就地逆置
题目单链表的就地逆置思路链表的头插法代码/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode* p=nullptr; ListNode*原创 2022-02-16 14:57:28 · 278 阅读 · 0 评论 -
有序数组中的单一元素
题目给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array思路不考虑时间复杂度,可以使用异或二分查找如果折半的长度是奇数,并且中间的数mid等于相邻左边的值,说明需要查找的值在右边如果折半的长度是奇数,并且中间的数m原创 2022-02-15 10:16:16 · 244 阅读 · 0 评论 -
最长的美好子字符串
题目当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。比方说,“abABB” 是美好字符串,因为 ‘A’ 和 ‘a’ 同时出现了,且 ‘B’ 和 ‘b’ 也同时出现了。然而,“abA” 不是美好字符串因为 ‘b’ 出现了,而 ‘B’ 没有出现。给你一个字符串 s ,请你返回 s 最长的 美好子字符串 。如果有多个答案,请你返回 最早 出现的一个。如果不存在美好子字符串,请你返回一个空字符串。链接:https://leetcode-cn.co原创 2022-02-02 19:13:56 · 559 阅读 · 0 评论 -
LRU 缓存
问题请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。思路使用哈希表、双向链表使用哈希表保证时间复杂度为O(1),查找效率高使用双向链表模拟LRU的队列,最近访问的放在队尾双向链表的意义在于为哈希表指定了达到容量之后的淘汰策略哈希表的意义在于返回节点的引用便于双向链表的删除和插入分别使用C++实现java原生实现基于LinkedHashMap代码C++实现typedef struct原创 2022-01-22 22:09:52 · 745 阅读 · 0 评论 -
最小时间差
题目给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。思路排序,模拟代码class Solution {public: int findMinDifference(vector<string>& timePoints) { sort(timePoints.begin(),timePoints.end()); int n=timePoints.size();原创 2022-01-18 21:03:00 · 288 阅读 · 0 评论 -
统计元音字母序列的数目
问题给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串:字符串中的每个字符都应当是小写元音字母(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)每个元音 ‘a’ 后面都只能跟着 ‘e’每个元音 ‘e’ 后面只能跟着 ‘a’ 或者是 ‘i’每个元音 ‘i’ 后面 不能 再跟着另一个 ‘i’每个元音 ‘o’ 后面只能跟着 ‘i’ 或者是 ‘u’每个元音 ‘u’ 后面只能跟着 ‘a’由于答案可能会很大,所以请你返回 模 10^9 + 7 之后的结果。链接:http原创 2022-01-17 21:08:42 · 149 阅读 · 0 评论 -
第 N 位数字
题目给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。链接:https://leetcode-cn.com/problems/nth-digit思路9 =============== 990*2 ============ 18090* 10 *3 ========= 270090* 10* 10* 4 ====== 36000================= 9*10^(n-1原创 2022-01-13 15:19:29 · 152 阅读 · 0 评论 -
整数替换问题
问题给定一个正整数 n ,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?链接:https://leetcode-cn.com/problems/integer-replacement思路记忆化搜索代码class Solution {public: unordered_map<int,int> mp; int integerRepla原创 2022-01-09 21:39:51 · 486 阅读 · 0 评论 -
至少有 K 个重复字符的最长子串
问题给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。思路模仿快排思路,使用哈希表和分治思想。代码class Solution {public: int longestSubstring(string s, int k) { // 模仿快排思路,进行一次划分,分两部分 if(s.size()<k) return 0; unorder原创 2022-01-07 21:05:24 · 683 阅读 · 0 评论 -
组合总和 Ⅳ
问题给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-iv思路完全背包的方案数问题,装满,考虑顺序for循环交换顺序即可完全背包代码class Solution {public: int combination原创 2022-01-01 22:43:35 · 235 阅读 · 0 评论