![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
陌离
这个作者很懒,什么都没留下…
展开
-
剑指offer--正则表达式匹配
'.'表示任意一个字符'*'表示前一个字符出现任意多次考虑最优策略的最后一步,p的最后一个字符,1)是’.’ 或者 s[i-1] == p[j-1] 2)是’*’——>忽略*和不忽略*两种处理方式状态:dp[i][j]代表s的前i个字符能否被p的前j个字符所匹配转移方程:dp[i][j] = 1) dp[i-1][j-1] 2) dp[i][j-2] || dp[i...原创 2020-03-11 13:18:11 · 151 阅读 · 0 评论 -
剑指offer--进制转换
leetcode 504 10进制–>7进制class Solution {public: string convertToBase7(int num) { if(num == 0) return "0"; string res; bool positive = true; if(num < 0){ ...原创 2020-03-10 21:14:46 · 88 阅读 · 0 评论 -
剑指offer--位操作
leetcode 476 数字的补数class Solution {public: int findComplement(int num) { bool flag = false; //因为是正整数,从第31位开始 for(int i = 31; i >= 0; i--){ int mask = 1 <...原创 2020-03-10 20:12:03 · 99 阅读 · 0 评论 -
剑指offer--字符串相加和相乘
leetcode 415 字符串相加–>若直接转为数字进行相加,有可能会造成溢出。模拟相加的核心代码: int carry = 0; //进位 for(int i = n1-1; i >= 0; i--){ int tmp = num1[i] - '0' + num2[i] - '0' + carry; //这一位相加 ...原创 2020-03-10 17:57:18 · 323 阅读 · 0 评论 -
剑指offer--复杂链表的复制
借用一个map存储(原节点,拷贝的节点)class Solution {public: Node* copyRandomList(Node* head) { if(head == nullptr) return head; unordered_map<Node*, Node*> m; //(原节点,拷贝节点)) Node* c...原创 2020-03-10 14:43:18 · 70 阅读 · 0 评论 -
剑指offer--删除排序链表中的重复元素
删除一个元素有两个含义:一是删除这个元素,只出现一次;二是删除这个元素不再出现。lleetcode 83 删除排序链表中的重复元素Iclass Solution {public: ListNode* deleteDuplicates(ListNode* head) { ListNode* dummy = new ListNode(-1); dummy-...原创 2020-03-10 12:49:38 · 106 阅读 · 0 评论 -
剑指offer--反转链表
递归class Solution {public: ListNode* reverseList(ListNode* head) { if(head == nullptr || head->next == nullptr) return head; ListNode* cur = reverseList(head->next);//翻转之后的链...原创 2020-03-10 12:00:58 · 59 阅读 · 0 评论 -
剑指offer--构建乘积数组
给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。简单来说就是除自身以外的乘积。leetcode 238乘积 = 左边的数的乘积 * 右边的数的乘积class Solution {public: vector<int> con...原创 2020-03-09 22:53:36 · 123 阅读 · 0 评论 -
剑指offer--二进制中1的个数
class Solution {public: int hammingWeight(uint32_t n) { return bitset<32>(n).count(); }};class Solution {public: int hammingWeight(uint32_t n) { int res = 0; ...原创 2020-03-09 21:36:09 · 72 阅读 · 0 评论 -
剑指offer--替换空格
class Solution {public: string replaceSpace(string s) { string res; for(int i = 0; i < s.size(); i++){ if(s[i] == ' '){ res += "%20"; }e...原创 2020-03-09 21:30:02 · 67 阅读 · 0 评论 -
剑指offer--排序数组
leetcode 912 使用常用的排序算法进行排序class Solution { //冒泡 稳定 void bubbleSort(vector<int>& nums){ //i表示当前一共处理了几个数字 for(int i = 0; i < nums.size()-1; i++){ bool...原创 2020-03-09 20:51:33 · 112 阅读 · 0 评论 -
剑指offer--二叉搜索树的最近公共祖先
二叉树的最近公共祖先p和q的位置关系:p和q分居root两侧;p和q在root的左侧或者右侧。先遇到谁就返回谁。class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == p || root == q) ret...原创 2020-03-09 15:23:35 · 77 阅读 · 0 评论 -
剑指offer--二叉树的镜像
二叉树的镜像class Solution {public: TreeNode* mirrorTree(TreeNode* root) { if(root == nullptr) return root; TreeNode* l = root->left; TreeNode* r = root->right; root...原创 2020-03-09 15:05:44 · 69 阅读 · 0 评论 -
剑指offer--二叉树的最大深度和最小深度
二叉树的最大深度:从根节点到最远叶子节点的最长路径上的节点数。二叉树的最小深度:从根节点到最近叶子节点的最短路径上的节点数量。//递归class Solution {public: int maxDepth(TreeNode* root) { if(root == nullptr) return 0; return max(maxDepth(root...原创 2020-03-09 13:22:33 · 170 阅读 · 0 评论 -
剑指offer--链表中倒数第K个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5./** * Definition for ...原创 2020-03-09 13:01:48 · 146 阅读 · 0 评论 -
剑指offer--左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。关键点:保持原有的顺序class Solution {public: //双重循环 时间复杂度O(kn) 空间复杂度O(1) string reverseLeftWords...原创 2020-03-09 12:21:25 · 100 阅读 · 0 评论