05 2020 档案
摘要:题目 经典题目,最长递增子序列。 有O(n2)效率,还有O(n*logn)效率的。 O(n2)的效率很好理解的啦,就是大家最常见的那种DP O(n*logn) 的方法是维护一个递增的栈,这个栈不等于最长递增子序列。但是数组的长度一定是等于最长递增子序列的长度的。 遍历原始数组,每次的操作是把当前元素
阅读全文
摘要:题目 比较两个字符串,有多少相同位置的字符是相同的,相同的字符放在不同的位置 class Solution { public: int digit[10]; string getHint(string secret, string guess) { int a = 0, b = 0; for (in
阅读全文
摘要:题目 树的序列化, /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), lef
阅读全文
摘要:题目 求一个数组的中位数,但是这个数组是动态增加的,怎么做呢?可以考虑到用插入排序,每增加一个值,都插入排序一下,最坏的效率是O(n),查询效率是O(1) 效率太低,会超时。更高明的做法,是维护两个堆,一个是大堆,一个是小堆,大堆的数字都大于小堆里的数字,两个堆的数字均分这个数字。大堆用最小堆实现,
阅读全文
摘要:题目 题意:地上有一堆石头,每次只能拿1-3个石头,两个人轮流拿,谁拿走最后一个石头,谁就获胜。你先手。 题解:如果地上的石头小于等于3个,先手必赢,当等于4的时候,后手必赢。基于4我们可以推出,当石头的数=8的时候,后手也必赢,5,6,7都是先手赢,所以规律可以递推找到,就是看是否是4的整数倍。
阅读全文
摘要:题目 很简单的字符串处理题 class Solution { public: map<string, char> m; map<char, string> m2; bool wordPattern(string pattern, string str) { string s = ""; int i,
阅读全文
摘要:``` #include #include #include #include #include #include #include #include #include #include using namespace std; struct Node { int val; Node* left; Node* right; Node(int value) { this->val = value;
阅读全文
摘要:``` #include #include #include #include #include #include #include #include #include #include using namespace std; struct ListNode { int value; ListNode* next; ListNode(int value) { this->value = valu
阅读全文
摘要:"题目" 一道好题目。 发现数组里重复的数字是什么,不借助额外的数据结构。数组里的数字范围是1 n,数组的个数是n+1,所以一定存在重复的情况。重复的个数至少是1。如果题目说只有一个数字是重复的,那么就是另一道题目了。 首先根据这个数组的特性,按照数组的下标把从第0个数开始,把数组变成一个链表,链表
阅读全文
摘要:"题目" 再维护一个iterator ,用来实现peek
阅读全文
摘要:"题目" 题意:把一个数组里的所有0放到数组末尾,数组里其他数字的顺序不要变 题解: 可以利用冒泡的思想,写一个O(n^2)的方法。 更高效的是,从左往右计算每个非0数字在最后结果中的位置,就可以了。O(n)
阅读全文
摘要:"题目" 题解: 如标题,其实就是暴搜啦
阅读全文
摘要:"题目" 动态规划
阅读全文
摘要:"题目" 二分
阅读全文
摘要:"题目" 现在变了,数列是拍好序的,题目要求对数效率,因为x只可能有一个那就二分咯
阅读全文
摘要:"题目" 题目的意思很简单啦,就是问你一个数组,有x个数字,都大于等于x,问这个x是多少, 这个x肯定是一定的。 排个序就好了
阅读全文
摘要:"题目" 很简单的模拟题啦
阅读全文