随笔分类 - 31天刷题打卡
摘要:1.剑指 Offer 18. 删除链表的节点 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x
阅读全文
摘要:1.剑指 Offer 46. 把数字翻译成字符串 动态方程: dp[i] = dp[i + 1] + dp[i + 2] 或dp[i] = dp[i + 1] 1 class Solution { 2 public: 3 int translateNum(int num) { 4 if(num >=
阅读全文
摘要:1.剑指 Offer 42. 连续子数组的最大和 dp数组:dp[i]是指以i结尾的连续子数组的最大和 res是在dp[0]--dp[i]里找到最大值 1 class Solution { 2 public: 3 int dp[100001]; 4 int maxSubArray(vector<in
阅读全文
摘要:1.剑指 Offer 26. 树的子结构 recur函数递归用来判断树B是否是树A的子结构:如果B为空,说明树B已全部遍历完,不管A是否为空,树B都是树A的子结构; 如果 在B不为空的情况下A为空 或者 两者某个对应位置的节点不同 ,那么树B就不是树A的子结构; isSubStructure函数递归
阅读全文
摘要:1.剑指 Offer 10- I. 斐波那契数列 1 class Solution { 2 public: 3 int fib(int n) { 4 if(n <= 1) return n; 5 int p = 0,q = 1,t; 6 for(int i = 2;i <= n;i ++){ 7 t
阅读全文
摘要:1.剑指 Offer 32 - I. 从上到下打印二叉树 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right;
阅读全文
摘要:1.剑指 Offer 04. 二维数组中的查找 从右上角开始查找,同一行它的左边元素都比它小,同一列它的下边元素都比它大,它就相当于二分法里的那个中间点,如果它大于target(说明这一列的元素都会比它大),就把列数减一,小于就行数加一 1 class Solution { 2 public: 3
阅读全文
摘要:1.剑指 Offer 03. 数组中重复的数字 1)排序+遍历查找 1 class Solution { 2 public: 3 int findRepeatNumber(vector<int>& nums) { 4 sort(nums.begin(),nums.end()); 5 int n =
阅读全文
摘要:1.剑指 Offer 05. 替换空格 1)再加一个数组 1 class Solution { 2 public: 3 string replaceSpace(string s) { 4 string res; 5 for(auto x : s){ 6 if(x == ' ') 7 res += "
阅读全文
摘要:1.剑指 Offer 06. 从尾到头打印链表 1)常规法,遍历+反向迭代器 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNod
阅读全文
摘要:1.剑指 Offer 09. 用两个栈实现队列 1 class CQueue { 2 public: 3 stack<int> s1,s2; 4 CQueue() { 5 6 } 7 8 void copy(stack<int>& a,stack<int>& b){ 9 while(a.size()
阅读全文

浙公网安备 33010602011771号