上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 67 下一页
摘要: class Solution { public: static bool cmp(int& a, int& b) { string sa = to_string(a), sb = to_string(b); return sa + sb < sb + sa; } string minNumber(v 阅读全文
posted @ 2021-07-31 15:22 Dazzling! 阅读(14) 评论(0) 推荐(0) 编辑
摘要: class Solution { public: int digitAtIndex(int n) { int digit = 1; int start = 0; long long cnt = 10; while (n >= cnt) { n -= cnt; digit++; if (start = 阅读全文
posted @ 2021-07-31 15:08 Dazzling! 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 标准的中序遍历采用 左 → 根 → 右 的顺序,其中 左 和 右 的部分调用递归。 本题的处理在于将前一个结点与当前结点链接,因此,必须跟踪最后一个结点,该结点在新的双向链表中是当前最大的。 另外一个细节:我们也需要保留第一个,也就是最小的结点,以完成闭环。 下面是具体算法: 将 first 和 l 阅读全文
posted @ 2021-07-29 09:18 Dazzling! 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。由于链表的头节点可能会被删除,因此我们需要额外使用一个哑节点(dummy node)指向链表的头节点。 具体地,我们从指针 p 指向链表的哑节点,随后开始对链表进行遍历。如果当 阅读全文
posted @ 2021-07-28 10:57 Dazzling! 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。 具体地,我们从指针 cur 指向链表的头节点,随后开始对链表进行遍历。如果当前 cur 与 cur.next 对应的元素相同,那么我们就将 cur.next 从链表中移除;否 阅读全文
posted @ 2021-07-28 09:30 Dazzling! 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 法一 我们首先将该链表中每一个节点拆分为两个相连的节点,例如对于链表 \(A \rightarrow B \rightarrow C\),我们可以将其拆分为 \(A \rightarrow A' \rightarrow B \rightarrow B' \rightarrow C \rightarr 阅读全文
posted @ 2021-07-27 23:22 Dazzling! 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 对于给定的某个排列,我们想求出比它大的最小的排列。 可以从后往前遍历这个排列,找到第一个可以让排列的字典序变大的位置。 只有当序列单调下降时,它才不存在更大的排列,因此我们要找的位置就是第一-次出现$nums[i] < nums[i+1]$ 的位置。 那么此时将 $nums[i]$变成比它大的最小数 阅读全文
posted @ 2021-07-27 11:04 Dazzling! 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 序列中包含了重复的数字,要求我们返回不重复的全排列,那么我们依然可以选择使用搜索回溯的方法来做。 我们将这个问题看作有 n 个排列成一行的空格,我们需要从左往右依次填入题目给定的 n 个数,每个数只能使用一次。那么很直接的可以想到一种穷举的算法,即从左往右每一个位置都依此尝试填入一个数,看能不能填完 阅读全文
posted @ 2021-07-27 10:33 Dazzling! 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 为了动态维护中位数,我们可以建立两个二叉堆:一个小根堆、一个大根堆。 在依次读入这个整数序列的过程中,设当前序列长度为M,我们始终保持: 序列中从小到大排名为1 ~ M/2的整数存储在大根堆中; 序列中从小到大排名为M/2+1 ~ M的整数存储在小根堆中, 大根堆允许存储的元素最多比小根堆多一个。 阅读全文
posted @ 2021-07-26 21:26 Dazzling! 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 法一 我们用一个大根堆实时维护数组的前 k 小值。首先将前 k 个数插入大根堆中,随后从第 k+1 个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。 class Solution { public: vector<i 阅读全文
posted @ 2021-07-26 19:21 Dazzling! 阅读(36) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 67 下一页