刷题记录
EmstanLee
这个作者很懒,什么都没留下…
展开
-
leetcode-206-反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?/** * Definition for singly-linked list. * struct ListNode { * int val; *...原创 2018-06-22 19:14:13 · 157 阅读 · 0 评论 -
leetcode138-复制带随机指针的链表
方法一:利用map,空间复杂度O(N)class Solution {public: RandomListNode *copyRandomList(RandomListNode *head) { if(head==NULL) return NULL; //先进行浅拷贝 //先设置一个哨兵节点,方便直...原创 2018-10-10 19:48:55 · 1763 阅读 · 0 评论 -
leetcode-695-岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,...原创 2018-11-18 22:02:22 · 215 阅读 · 0 评论 -
leetcode-529-扫雷游戏-c++
思路:点开一个格子时,判断当前格子是不是雷,是雷的话,把该格子改为'X',然后直接返回。若当前格子不是雷,则先统计周围有几个雷,如果旁边一个雷都没有,把当前格子改为'B',并递归的搜索其他八个方向的格子。如果旁边有雷,则把当前格子改为雷的数目,返回。其中的order表示访问次序,用来区分是不是一开始就点到了雷。class Solution {private: void dfs(...原创 2018-11-20 21:54:43 · 492 阅读 · 1 评论 -
leetcode-515. 在每个树行中找最大值-c++
一开始没有考虑每层中会出现负数的情况,之后把负无穷取为 -0x3f3f3f3f,以为已经足够小了。结果有个测试用例居然是这样的:...... 最后老老实实换成INT_MIN吧。思路:树的层次遍历,也就是图的BFS,更新每层的最大值和节点数即可。/** * Definition for a binary tree node. * struct TreeNode {...原创 2018-11-20 22:24:42 · 226 阅读 · 0 评论 -
leetcode-559. N叉树的最大深度(两种解法)-c++
方法一:dfs(类似于求二叉树的高度)class Solution {public: int maxDepth(Node* root) { if(root==NULL) return 0; int max=0; for(int i=0;i<root->children.size();++i){ ...原创 2018-11-19 22:31:14 · 407 阅读 · 0 评论 -
leetcode-198. 打家劫舍
class Solution {public: int rob(vector<int>& nums) { if(nums.empty()) return 0; if(1==nums.size()) return nums[0]; size_t n=nums.size();...原创 2018-12-12 23:18:30 · 133 阅读 · 0 评论 -
leetcode-199. 二叉树的右视图
思路:打印每一层的最后一个节点即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NU...原创 2018-12-30 15:39:41 · 161 阅读 · 0 评论 -
leetcode-129. 求根到叶子节点数字之和
思路:用一个字符串记录节点的值,每次将节点的值添加到字符串的最后,当访问到叶子节点时,将路径和计入sum.回溯时,弹出最后的一个字符值即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;...原创 2018-12-30 16:56:40 · 158 阅读 · 0 评论 -
leetcode-297. 二叉树的序列化与反序列化
思路:通过前序、后续、或者层次遍历二叉树,用一个字符串保存节点的值,要注意的是,每个节点的值之后要添加一个特殊符号(比如下划线)分隔,否则可能无法区分节点的值。 比如一个节点的值可能是12,不加下划线的话,反序列化时就分不清楚,12表示的是一个值为12的节点,或者两个节点,其值分别为1,2。split函数用来去除原来作为分割的符号,本文中用来去除下划线。总之:怎么...原创 2019-01-26 20:54:19 · 576 阅读 · 1 评论 -
leetcode-206-反转链表1
//方法一:空间复杂度o(N)的方法class Solution {public: ListNode* reverseList(ListNode* head) { if(head==NULL||head->next==NULL) return head; stack<ListNode*> s;//利用堆栈 ...原创 2019-01-22 23:02:40 · 117 阅读 · 0 评论 -
剑指offer-链表的入环节点
//方法一:使用set,空间复杂度为O(N)class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead) { if(pHead==NULL||pHead->next==NULL) return NULL; set<ListNode*>...原创 2019-01-22 23:07:26 · 309 阅读 · 0 评论 -
leetcode-86-分隔链表
思路:把小于x的值放到less中,大于等于x的放到more中,保持原序,最后再拷贝回原链表中。class Solution {public: ListNode* partition(ListNode* head, int x) { if(head==NULL||head->next==NULL) return head; ...原创 2018-10-08 18:06:39 · 227 阅读 · 0 评论 -
字符串排序
题目:https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584?tpId=37&tqId=21249&tPage=2&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking题目描述 解题思路:代码:#incl...原创 2018-09-23 21:43:17 · 108 阅读 · 0 评论 -
leet-code-105. 从前序与中序遍历序列构造二叉树 and leet-code-106 从中序与后序遍历序列构造二叉树
leet-code-105. 从前序与中序遍历序列构造二叉树:class Solution {private: int search(int *inorder,int len,int target){ for(size_t i=0;i<len;++i){ if(target==inorder[i]) ...原创 2018-07-02 20:29:12 · 468 阅读 · 0 评论 -
leetcode-106. 从中序与后序遍历序列构造二叉树
详细解释见另一篇博客:https://blog.csdn.net/u014450222/article/details/80889403根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: ...原创 2018-07-02 20:45:33 · 5597 阅读 · 0 评论 -
leetcode-108. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5思路...原创 2018-07-02 21:03:44 · 139 阅读 · 0 评论 -
leetcode-24-两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路:通过递归两两交换节点/** * Definition for singly-linked list. * struct Lis...原创 2018-07-03 22:43:26 · 109 阅读 · 0 评论 -
leetcode-62-不同路径(动态规划)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:...原创 2018-07-28 21:59:15 · 370 阅读 · 0 评论 -
leetcode-63- 不同路径 II(动态规划)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ ...原创 2018-07-28 23:07:20 · 2416 阅读 · 0 评论 -
leetcode-64-最小路径(动态规划)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路:本题属于较简单的动态规划,题解如下:class Solution {publi...原创 2018-07-29 10:44:21 · 127 阅读 · 0 评论 -
leetcode-96-不同的二叉搜索树(动态规划)
原文链接:https://blog.csdn.net/u014472643/article/details/81260183给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ /...转载 2018-07-29 22:51:42 · 275 阅读 · 0 评论 -
leetcode-120-三角形最小路径和(动态规划)
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...原创 2018-07-31 23:18:51 · 621 阅读 · 0 评论 -
leetcode-109- 有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2018-08-01 23:21:56 · 164 阅读 · 0 评论 -
leetcode-121- 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2018-08-02 23:23:35 · 178 阅读 · 0 评论 -
leetcode-946 验证栈序列
思路:用一个栈去模拟出入栈的过程 比如,当前pushed={1,2,3,4,5},popped={4,5,3,2,1}时,借助一个额外的栈s,置i=0,j=0(i指向pushed,j指向popped); popped[j]=4,所以先将,1,2,3压入栈s中,此时i指向了pushed中的4,j指向了popped中的4,它俩相同,所以可以不用入栈,相当于4入栈以后直接出栈了。此时...原创 2019-04-30 15:30:11 · 249 阅读 · 0 评论