leetcode
文章平均质量分 85
扎个冲天揪
冲冲冲冲冲冲鸭
展开
-
【动态规划】_leetcode刷题的各种股票问题
1.leetcode_121.买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入...原创 2019-07-09 18:34:38 · 572 阅读 · 0 评论 -
leetcode_【120】三角形最小路径和
1.题目描述给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。2.解题思路动态规划:每一层的值加上上一层的值中最小值,最后取最后一层的最小值就好了例如 [2] ...原创 2019-07-06 10:54:49 · 120 阅读 · 0 评论 -
不同的二叉搜索树
1.题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ ...原创 2019-07-06 10:37:04 · 215 阅读 · 0 评论 -
leetcode_【70】爬楼梯
1.题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 ...原创 2019-07-06 10:33:52 · 90 阅读 · 0 评论 -
leetcode-64-最小路径和
1.题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。2.解题思路如果数组只有一个数,则路径最小即为该值,dp[0][0] = 0;(1)动态规...原创 2019-07-06 10:30:58 · 81 阅读 · 0 评论 -
动态规划-零钱兑换问题
1.题目描述leetcode-322:零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例1:输入: coins=[1,2,5],amount = 11>输出: 3示例2:输入: coins=[1,2,5],amount = 11输出: -...原创 2019-07-15 17:27:21 · 3514 阅读 · 3 评论 -
【动态规划】不同的路径
1.题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?2.解题思路动态规划(1)初始化 1) 从[0,0]走到[0,0]的路径,即没走,设dp[0][0] = 0; 2) 如果m*n的n为...原创 2019-07-04 16:45:29 · 320 阅读 · 0 评论 -
leetcode_【104】二叉树的最大深度
1. 题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。2.解题思路同 【剑指offer38题】递归实现...原创 2019-07-06 11:01:34 · 133 阅读 · 0 评论 -
leetcode_【100】相同的树
1.题目描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 ...原创 2019-07-06 17:02:02 · 99 阅读 · 0 评论 -
动态规划_打家劫舍
打家劫舍I 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (...原创 2019-08-14 11:08:39 · 279 阅读 · 0 评论 -
链表题【翻转链表】【环形链表】【删除重复元素】【两数相加】【相交链表】
链表的定义static class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}1.翻转链表https://leetcode-cn.com/problems/reverse-linked-list/递归:在遍历链表时,将当前节点cur的next指向前一个元素,由于节点没有引用...原创 2019-07-31 22:08:59 · 231 阅读 · 0 评论 -
二叉树的涉及的题
二叉树的定义public static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }1.二叉树的最大深度https://leetcode-cn.com/proble...原创 2019-07-26 21:06:26 · 154 阅读 · 0 评论 -
回溯算法-【全排列】【组合总和】【n皇后】【子集】
回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。即从一条路往前走,能进则进,不能进则退回来,换一条路再试。如何使用回溯算法 回溯我认为也就是一种递归,有以下四个参数,当然不一定是我所举例的类型,要看题目而定 (1)一个全局变量集合保存所有满足条件的答案,举例:List<List> ...原创 2019-07-22 11:32:24 · 398 阅读 · 0 评论 -
树的【前序遍历】【中序遍历】【后序遍历】【层遍历】【BFS】【DFS】
二叉树的数据结构public static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }1.二叉树的深度优先遍历//递归实现class solution{ ...原创 2019-07-26 19:17:31 · 198 阅读 · 0 评论 -
【俄罗斯套娃信封问题】【堆积木】
俄罗斯套娃信封问题https://leetcode-cn.com/problems/russian-doll-envelopes/ 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。 请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封...原创 2019-07-30 11:34:04 · 808 阅读 · 0 评论 -
Shopee的办公室
1.题目描述 shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样最容易接近目的地,但是小虾同学不想让自己的boss们看到自己经常在他们面前出没,或者迟到被发现。他决定研究一下如果他不通过boss们的位置,他可以有多少种走法?输入描述: 第一行 x,y,n (0<...原创 2019-07-17 14:42:59 · 1654 阅读 · 0 评论 -
leetcode_【134】加油站
1.题目描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明: 如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元...原创 2019-07-16 09:32:06 · 129 阅读 · 0 评论 -
leetcode_【55】跳跃游戏
1.题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。...原创 2019-07-04 16:42:51 · 424 阅读 · 1 评论 -
leetcode_【53】最大子序和
1.题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。2.解题思路方法1:动态规划定义一个函数f(n),以第n个数为结束点的子数列的最大和,存在一个递推关系f(n) = max(f(...原创 2019-07-04 16:38:02 · 119 阅读 · 0 评论 -
leetcode_【9】回文数
1.题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2019-07-04 15:30:38 · 89 阅读 · 0 评论 -
leetcode_【8】字符串转换成整数
1.题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,...原创 2019-07-04 15:27:52 · 99 阅读 · 0 评论 -
leetcode_【7】整数反转
1.题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。2.解题思...原创 2019-07-04 15:24:46 · 79 阅读 · 0 评论 -
leetcode_【5】最长回文子串
1.题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”2.解题思路方法1:暴力破解方法方法2:动态规划新建一个dp[i][j]代表的意思是索引从i到j的子字符串是否是回文,假设s =...原创 2019-07-04 15:22:08 · 179 阅读 · 0 评论 -
leetcode_【4】寻找两个有序数组的中位数
1.题目描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数...原创 2019-07-04 15:13:32 · 79 阅读 · 0 评论 -
leetcode_【3】无重复字符的最长子串
1.题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是...原创 2019-07-04 15:08:43 · 79 阅读 · 0 评论 -
leetcode_【2】两数相加
1.题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2019-07-04 14:44:31 · 87 阅读 · 0 评论 -
【两数之和】【三数之和】
1.题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2019-07-04 14:38:34 · 109 阅读 · 0 评论 -
leetcode_【10】正则表达式匹配
1.题目描述给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。‘.’ 匹配任意单个字符。‘*’ 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = “aa”...原创 2019-07-04 15:34:07 · 131 阅读 · 0 评论 -
【盛最多水的容器】【接雨水I】
1.题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。**说明:**你不能倾斜容器,且 n 的值至少为 2。2. 解题思路这种方法背后的思路在于,两线段之间形成的区域...原创 2019-07-04 15:38:27 · 150 阅读 · 0 评论 -
leetcode_【24】两两交换链表中的节点
1.题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.2.解题思路方法1:将链表中的数放到stack里面,每当stack里面有两个值,就pop弹出,将弹出的值放到新的链表后面。方法2:递归3...原创 2019-07-04 16:32:21 · 105 阅读 · 0 评论 -
【合并两个有序链表】【合并K个排序链表】
1.题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:**输入:**1->2->4, 1->3->4**输出:**1->1->2->3->4->42.解题思路注:该题与剑指offer-[16]题一致,还可以用递归。(1) 判断是否有空链表,如果有则直接返回另一个不为...原创 2019-07-04 16:26:52 · 134 阅读 · 0 评论 -
leetcode_【19】删除链表的倒数第N个节点
1.题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?2.解题思路双指针(1)第一个指针curNode先走...原创 2019-07-04 16:23:02 · 97 阅读 · 0 评论 -
【整数转罗马数字】【罗马数字转整数】
1.题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中...原创 2019-07-04 16:14:41 · 118 阅读 · 0 评论