LeetCode
142857_T
这个作者很懒,什么都没留下…
展开
-
动态规划 leetcode 968. 监控二叉树
题目:https://leetcode-cn.com/problems/binary-tree-cameras//** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(...原创 2020-05-06 19:02:51 · 508 阅读 · 0 评论 -
BFS 树的层次遍历
团灭leetcode 树的层次遍历问题,层次遍历本质就是BFS广度优先搜索,在前文https://blog.csdn.net/weixin_43976833/article/details/105740752的基础上稍加改动即可完成。leetcode 102. 二叉树的层序遍历题目:https://leetcode-cn.com/problems/binary-tree-level-order...原创 2020-04-27 11:48:25 · 499 阅读 · 0 评论 -
BFS 广度优先搜索 二叉树的最小深度 打开转盘锁
BFS参考:https://mp.weixin.qq.com/s/WH_XGm1-w5882PnenymZ7g题目:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree//** * Definition for a binary tree node. * struct TreeNode { * int val...原创 2020-04-24 22:02:01 · 168 阅读 · 0 评论 -
DFS leetcode 1020. 飞地的数量
题目:https://leetcode-cn.com/problems/number-of-enclaves/思路:从四条边上的1进行DFS,把与其相连接的1全部置为0,最后剩下的1就都是飞地class Solution {public: //给定索引是否在数组内 bool inArea(vector<vector<int>>& A, int...原创 2020-04-23 23:26:36 · 212 阅读 · 0 评论 -
DFS深度优先搜索 岛屿问题 涂色问题 扫雷游戏
题目:https://leetcode-cn.com/problems/number-of-islands/参考:https://leetcode-cn.com/problems/number-of-islands/solution/dao-yu-shu-liang-by-leetcode/基于DFS解决问题 :为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 1,则以其为起...原创 2020-04-21 00:32:02 · 413 阅读 · 0 评论 -
动态规划 leetcode 343. 整数拆分 (同剪绳子)
题目:https://leetcode-cn.com/problems/integer-break/同剪绳子:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/1. 把当前整数 i 分成 j、i-j两段,其中 1 <= j <= i-1. 2. 某种切割方式下,最大乘积 = max(两段都不剪,两段都剪,一段剪一段不剪) ...原创 2020-04-18 22:15:07 · 184 阅读 · 0 评论 -
动态规划 leetcode 面试题47. 礼物的最大价值
题目:https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/class Solution {public: int maxValue(vector<vector<int>>& grid) { int m = grid.size(); int n = g...原创 2020-04-18 15:28:07 · 230 阅读 · 0 评论 -
leetcode 42. 接雨水
接到雨水的面积 = 总面积 - 柱子的面积 - 左边没有水的面积 - 右边没有水的面积class Solution {public: int trap(vector<int>& height) { int n = height.size(); if(n == 0) return 0; int res = 0; ...原创 2020-04-18 13:53:19 · 114 阅读 · 0 评论 -
leetcode 445. 两数相加2
官方题解class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { stack<int> s1, s2; while (l1) { s1.push(l1 -> val); l1 = l1 -&g...原创 2020-04-14 18:46:20 · 90 阅读 · 0 评论 -
leetcode 10. 正则表达式匹配
参考:https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/dong-tai-gui-hua-zhi-zheng-ze-biao-da题目:https://leetcode-cn.com/problems/regular-expression-matching/'.' 匹配任意单个字符, 一一对应。'*' 匹配零个或多个前面的那...原创 2020-04-11 18:42:41 · 153 阅读 · 0 评论 -
团灭leetcode股票买卖问题
参考:https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/tuan-mie-gu-piao-wen-ti状态:1. 哪一天,2. 允许交易的最大次数,3. 当前的持有状态(持有/没有持有)。选择:买入,卖出,无操作for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for...原创 2020-04-09 19:40:58 · 178 阅读 · 0 评论 -
团灭leetcode打家劫舍问题
参考:https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/qiang-fang-zi///打家劫舍1 leetcode 198//状态:当前房子index. 选择:抢或者不抢// dp数组定义:dp[i] 表示从第i间开始抢, 能抢到的最多的钱.// dp[i] = max(抢i, 不抢i) = max(nums[i] + ...原创 2020-04-09 00:50:25 · 206 阅读 · 0 评论 -
动态规划 高楼扔鸡蛋
leetcode 887 鸡蛋掉落https://leetcode-cn.com/problems/super-egg-drop/主要参考:https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/gao-lou-reng-ji-dan-wen-ti状态: 当前拥有的鸡蛋数量 K 和需要测试的楼层数N。可能你会觉得楼层区间是 [f...原创 2020-04-07 23:05:03 · 323 阅读 · 0 评论 -
剑指offer 6. 重建二叉树
根据前序遍历序列得到根节点在中序遍历序列中定位根节点,区分开左右子树依据长度划分出左、右子树的前序遍历序列和中序遍历序列,通过递归,分别建立左右子树。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *...原创 2020-04-04 23:49:33 · 76 阅读 · 0 评论 -
剑指offer 26. 复杂链表的复制
逐个复制节点,cloned节点在源节点之后,形如A A B B C C;针对cloned节点,设置其random指针;将长链表拆分成两个链表。struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : lab...原创 2020-04-04 15:59:56 · 90 阅读 · 0 评论 -
剑指offer 45. 圆圈中最后剩下的数字
普通解法:环形链表class Solution {public: int LastRemaining_Solution(int n, int m) { if(n < 1 || m < 1) return -1; list<int> numbers; for(int i = 0;i < n;i++) {...原创 2020-04-03 00:37:33 · 276 阅读 · 0 评论 -
剑指offer 37. 两个链表的第一个公共结点
求两个链表的长度指向长链表的指针 先走 (long_list_len - short_list_len) 步两个指针同时运动class Solution {public: unsigned int getListLen(ListNode *head) { unsigned int len = 0; ListNode* ptr = head; ...原创 2020-04-02 01:17:05 · 157 阅读 · 1 评论 -
剑指offer 17. 合并两个排序的链表
采用迭代的方法,参考了合并两个排序数组的做法class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* curr1 = pHead1; ListNode* curr2 = pHead2; ListNode* newH...原创 2020-04-01 23:21:01 · 71 阅读 · 0 评论 -
剑指offer 16. 反转链表
采用迭代方式反转链表class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode* pReversedHead = NULL; ListNode* curr = pHead; ListNode* pPrev = NULL; while(c...原创 2020-04-01 21:23:36 · 91 阅读 · 0 评论 -
剑指offer 15. 链表中倒数第k个节点
双指针法,注意边界条件class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead == NULL || k < 1) return NULL; ListNode* slow,* fast...原创 2020-04-01 17:24:32 · 70 阅读 · 0 评论 -
LeetCode92. 反转链表2 (反转从m到n的位置)
参考https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/di-gui-fan-zhuan-lian-biao-de-yi-bu-fenclass Solution {public: //反转链表前n个节点 ListNode* new_head_next; ListNode* reverseN(ListNod...原创 2020-03-31 23:01:16 · 289 阅读 · 0 评论 -
剑指offer 05.从尾到头打印链表
使用stackclass Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; stack<ListNode*> nodes; ListNode* pNode = head;...原创 2020-03-31 01:03:28 · 81 阅读 · 0 评论 -
剑指offer 05.替换空格
原地操作,从后往前操作class Solution {public: string replaceSpace(string s) { int ori_size = s.size(); int blank_nums = 0; for(auto i:s) { if(i==' ') bla...原创 2020-03-29 00:40:45 · 78 阅读 · 0 评论 -
leetcode202 快乐数
核心思想:使用快慢指针思想找出循环,参考“环形链表”题目class Solution {public: int bitSquareSum(int n) { int sum = 0; while(n > 0) { int bit = n % 10; sum += pow(bit, 2); ...原创 2020-03-25 12:19:54 · 136 阅读 · 0 评论 -
leetcode8 字符串转整数
正则表达式:^:匹配字符串开头[+-]:代表一个+字符或-字符?:前面一个字符可有可无\d:一个数字+:前面一个字符的一个或多个\D:一个非数字字符*:前面一个字符的0个或多个max(min( result, 上限), 下限) 用来防止结果越界#!/usr/bin/env python# -*- coding: utf-8 -*-import reclass Solutio...原创 2020-03-15 23:47:26 · 99 阅读 · 0 评论 -
LeetCode 50: pow(x, n)
原创 2019-10-31 21:21:25 · 81 阅读 · 0 评论 -
C++ split()
自己实现C++ split()// C++void transform(string str, vector<int>& vec){ int temp = 0; for(int i = 0; i < str.size(); ++i){ if(str[i] >= '0' && str[i] <= '9'){ ...原创 2019-10-23 23:20:22 · 1477 阅读 · 0 评论 -
LeetCode322:零钱兑换
IDvalue001121324355687138219341055// An highlighted block# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): if n < 2: ...原创 2019-10-12 17:22:40 · 109 阅读 · 0 评论 -
LeetCode 13: 罗马数字转整数 C++实现
思路【转载】构建一个字典记录所有罗马数字子串,注意长度为2的子串记录的值是(实际值 - 子串内左边罗马数字代表的数值)。这样一来,遍历整个 s的时候判断当前位置和前一个位置的两个字符组成的字符串是否在字典内,如果在就记录值,不在就说明当前位置不存在小数字在前面的情况,直接记录当前位置字符对应值。举个例子,遍历经过 IV 的时候先记录 I 的对应值 1 再往前移动一步记录 IV 的值 3,加...原创 2020-04-05 00:02:17 · 138 阅读 · 0 评论 -
LeetCode 876: 链表的中间结点 C++实现
思路快慢指针法代码实现 //Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };class Solution {public: ListNode* mi...原创 2019-05-29 20:43:51 · 330 阅读 · 0 评论 -
LeetCode 206: 反转链表 C++实现
题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路迭代倒序加入新的链表代码实现// 迭代class Solution {public: ListNode* reverseList(ListNode* head) { if(he...原创 2019-06-01 16:44:27 · 199 阅读 · 0 评论 -
LeetCode 203: 移除链表元素 C++实现
题目描述删除链表中等于给定值 val 的所有节点示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路dummy->next = head 是为了应对删除头结点的情况必须考虑到val连续出现的情况代码实现class Solution {public: ...原创 2019-05-31 14:02:54 · 264 阅读 · 0 评论 -
LeetCode 19: 删除链表的倒数第N个节点 C++实现
思路两次遍历算法:第一次遍历得到链表长度len,第二次遍历到(len - n)后删除下一节点(要删除的节点位于len - n + 1)一次遍历算法:双指针,保持恒定间距(此处设置为n)同时移动代码实现//两次遍历class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ...原创 2019-05-30 16:08:49 · 236 阅读 · 1 评论 -
LeetCode 11: 盛水最多的容器 python3实现
思路双指针,每次从短指针向长指针移动。解释:以短指针为其中一条边的所有情况里面,一开始长指针没移动之前,面积是最大的,因为此时宽最大。代码实现class Solution: def maxArea(self, height: List[int]) -> int: maxarea = 0 l = 0 r = len(height)...原创 2019-05-21 20:53:32 · 85 阅读 · 0 评论 -
LeetCode7 整数反转 python3实现
文章目录思路代码实现思路转换为字符串,再转换为列表,分类讨论非负数、负数,然后翻转代码实现class Solution: def reverse(self, x: int) -> int: tmp = list(str(x)) if tmp[0] != '-': result_list = tmp[::-1] #翻...原创 2019-05-21 15:53:21 · 364 阅读 · 0 评论