![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
JellyFishDing
这个作者很懒,什么都没留下…
展开
-
【LeetCode 30天挑战活动】Day 21. Leftmost Column with at Least a One
题目描述有一个自定义的01矩阵(即里面的元素非0即1),矩阵的每一行都是非倒序的目的是找到第一个出现’1’的列,返回这个列值,如果没有(即元素全为0),就返回-1限制:You can’t access the Binary Matrix directly. You may only access the matrix using a BinaryMatrix interface:Bi...原创 2020-04-22 17:18:53 · 392 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 20. Construct Binary Search Tree from Preorder Traversal
题目描述根据给定的二叉搜索树的先根遍历,把二叉搜索树建立起来,返回它的根由于涉及到二叉树,光用文字描述可能会不好理解,可以点击直接看题目解题思路这道题最关键的是要充分利用二叉搜索树的特点。先明确一下二叉搜索树的概念:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值我们对照一棵二叉搜索树的先根遍历数组来...原创 2020-04-22 15:16:07 · 178 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 19. Search in Rotated Sorted Array
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1。示例:Input: nums = [4,5,6,7,0,1,2], target = 0Output: 4Input: nums = [4,5,6,7,...原创 2020-04-21 23:16:32 · 130 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 18.Minimum Path Sum
题目描述给定一个二维数组,数组中的元素都是非负整数,找到从左上角到右下角的一条路径使得路径之和最小,返回这个最小路径和。注意:每次只能向下或者向右移动示例:Input:[[1,3,1],[1,5,1],[4,2,1]]Output: 7Explanation: Because the path 1→3→1→1→1 minimizes the sum.解题思路法一: 回...原创 2020-04-21 21:31:10 · 192 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 17. Number of Islands
昨天网不好,今天补上题目描述Given a 2d grid map of '1’s (land) and '0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or verticall...原创 2020-04-20 22:13:33 · 121 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 16. Valid Parenthesis String
阴间作业和阴间小学期害人不浅: (题目描述(我太懒了就直接复制原题了)Given a string containing only three types of characters: ‘(’, ‘)’ and ‘*’, write a function to check whether this string is valid. We define the validity of a s...原创 2020-04-19 14:11:23 · 123 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 15. Product of Array Except Self
题目描述计算数组中除自身之外的其他元素的乘积。示例:Input: [1,2,3,4]Output: [24,12,8,6]要求:(1)不使用除法(2)时间复杂度为O(n)(3)除最后返回的数组外,空间复杂度为O(1)解题思路不符合题意的两个方法使用除法。首先计算出所有元素的总乘积,然后对于每个位置,都除以这个位置的元素,得到的就是除自身外其它元素的乘积。但是这个方法中...原创 2020-04-15 19:13:20 · 101 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 14.Perform String Shifts
题目描述给定字符串s和二维数组shift,其中,shift数组指示对字符串s进行的字符移动操作。shift[i] = [direction, amount]direction:0为向左移动,1为向右移动amount:移动次数示例:Input: s = “abc”, shift = [[0,1],[1,2]]Output: “cab”Explanation:[0,1] means...原创 2020-04-15 11:46:35 · 147 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 13. Contiguous Array
题目描述给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。解题思路暴力法是第一反应且非常直观,但毕竟不到万不得已最好是不要用暴力法,于是开始思考有没有更好的解决方案。这种找最长子数组的题很多可以使用滑动窗口,但这题比较特殊,因为...原创 2020-04-15 10:55:08 · 181 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 12. Last Stone Weight
谁能想到我今天才做day12的题呢小说误国!!小说误国啊!!!(痛心!!题目描述(来自力扣)有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y...原创 2020-04-14 22:16:46 · 154 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 11. Diameter of Binary Tree
题目描述计算一棵二叉树的直径。对于直径的定义:二叉树中任意两个节点之间的最长路径,这个路径可能不通过根节点root示例:如下二叉树的直径是3, 有两条路径,[4,2,1,3] 或者 [5,2,1,3] 1 / \ 2 3 / \ 4 5 解题思路因为一向不是太擅长做二叉树的题,所...原创 2020-04-11 22:36:17 · 126 阅读 · 0 评论 -
【Leetcode 30天挑战活动】Day 10. Min Stack
害,昨天犯懒,一晚上没学习,就没做(爬今天补上题目描述设计一个最小栈,可以完成栈最基本的push、pop、top功能,除此之外要实现一个getMin方法,在常数时间内得到当前栈中的最小值解题思路(1)一个不符合题目要求的做法:使用List结构来模拟栈的操作,push即加入list,pop和top则是操作list的最后一个元素,getMin则需要对list进行一个遍历操作找到最小值。由...原创 2020-04-11 20:14:22 · 173 阅读 · 0 评论 -
【力扣每日一题】Day 2. 翻转字符串里的单词
题目描述给定一个字符串,逐个翻转字符串中的每个单词。说明:无空格字符构成一个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。示例:输入: " a good example "输出: “example good a”解题思路我是一个无情的api选手(酷使用空格将字符串分隔开...原创 2020-04-10 16:36:48 · 202 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 9.Backspace String Compare
题目描述给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例:输入:S = “a##c”, T = “##a#c”输出:true解释:S 和 T 都会变成 “c”。考虑如何使得空间复杂度为O(1)解题思路法一: 直观地,遍历两个字符串,按照退格的限制生成各自最终的字符串并比较,时间复杂度O(M + N),空间...原创 2020-04-09 20:16:37 · 238 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 8. Middle of the Linked List
题目描述找到一个链表的中间节点如果中间节点有两个,取右边的那个解法核心思想:快慢指针找中点使用两个指针,慢指针每次前进一个节点,快指针每次前进两个节点,当快指针指向链表末尾时,慢指针正好指向中点(之前有一个快慢指针找循环,这里有一个快慢指针找中点,快慢指针可真好用)code如下:class Solution { public ListNode middleNode(Li...原创 2020-04-09 15:47:59 · 102 阅读 · 0 评论 -
【力扣每日一题】Day 1. 括号生成
最近力扣在搞每日一题活动,正好我也需要多练一练JavaScript,所以就打算用js来做力扣的每日一题,并且每天在博客记录一下。LeetCode那边也会继续做,不过那边就是用Java写(目前比较贪心,打算js和Java两手抓,不说学得多精,但至少做题时得两个都会用题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3...原创 2020-04-09 11:09:49 · 189 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 7. Counting Elements
题目描述给定一个整数数组,计算x+1也在数组内的元素x的个数相同元素分开来算思路比较容易想到的是额外使用一个hashset,在对数组进行遍历的同时,判断x+1是否在已出现过的数组元素中,如果不在,将x保存在set中不知道算不算一个小技巧,将数组排序过后,从后往前,也就是按照降序去遍历会让这道题变得非常简单总结一下步骤就是:对数组进行排序按照降序的顺序对数组进行遍历,每次得到元...原创 2020-04-08 17:47:49 · 190 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 6. Group Anagrams
题目描述(来自力扣)给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。解法最关键的是找到一...原创 2020-04-07 14:25:20 · 120 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day 5. Best Time to Buy and Sell Stock II
题目描述(来自力扣)给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖...原创 2020-04-06 09:39:57 · 127 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day4. Move Zeroes
(昨天肝大作业忘记写了,今天补上)题目给定一个整数数组,将其中的0都移到数组的末尾,其它数字保持原来的顺序示例:Input: [0,1,0,13,12]Output: [1,13,12,0,0]要求:in-place我的思路比较容易想到的就是双指针法,两个指针一个指向0,一个指向非0,从数组的第一个数开始,如果在一次循环中找到的0的位置在找到的非0位置之前,就交换两个数。以题...原创 2020-04-05 20:02:03 · 144 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day3. Maximum Subarray
很经典的一道题啦(结果我第一遍做还没过×题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题方法这题的方法有很多,这里只写一个最好理解也是时间复杂度最低的方法动态规划动态规划的问题我一直不...原创 2020-04-03 20:09:32 · 141 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day2. Happy Number
题目编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:1² + 9² = 828² + 2² = 686² + 8² = 1001² + 0² + 0²...原创 2020-04-02 20:55:04 · 317 阅读 · 0 评论 -
【LeetCode 30天挑战活动】Day1. Single Number
题目给定一个非空数组,数组中只有一个数字出现了1次,其他所有数字都出现了2次,找到这个只出现了1次的数字。例如[2,1,2],返回1我的思路题目比较好理解也比较简单,第一个想法就是使用一个HashMap,遍历数组并记录下出现次数,然后遍历HashMap找到只出现过1次的数字。这个思路时间、空间复杂度都是O(n)。由于题目要求中希望不使用额外的空间,于是想了另一个思路,也是比较直观,贴一下...原创 2020-04-01 22:47:44 · 259 阅读 · 0 评论 -
【Leetcode Hard】1349. Maximum Students Taking Exam
原题链接题目描述给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的(不可用),就用 ‘#’ 表示;否则,用 ‘.’ 表示。学生可以看到左侧、右侧、左上、右上这四个方向上紧邻他的学生的答卷,但是看不到直接坐在他前面或者后面的学生的答卷。请你计算并返回该考场可以容纳的一起参加考试且无法作弊的最大学生人数。学生必须坐在状况良好的座位上。输入:seats = [[...原创 2020-02-18 21:02:22 · 603 阅读 · 0 评论 -
【Leetcode Medium】1348. Tweet Counts Per Frequency
原题链接题目描述记录推文的name和发布time,并返回要求的[start, end)区间内有多少指定的推文(区间按要求划分)我的思路这题最重要的是用什么数据结构来存推文name及发布时间。一开始想了两种数据结构,一个是HashMap<String, Integer>,但是由于hashmap是无序的,计算次数时搜索起来会比较麻烦;第二个是int数组,但只能方便记录次数不能对...原创 2020-02-11 20:45:15 · 318 阅读 · 1 评论 -
【Leetcode Easy】1346. Check If N and Its Double Exist
原题链接题目描述判断数组中是否存在这样两个数N和M,其中N = 2 * M我的思路看起来很简单的一道题,但卡了挺久的……果然一段时间不学习就会生疏一开始的想法是准备一个Set,首先将array排序,(从大到小)遍历排序后的array,判断set中是否存在当前元素的两倍的数据,如果有,返回true,如果没有,将当前数据加入array。这个思路的问题在于他要求必须是N先加入set,在正...原创 2020-02-10 13:03:39 · 415 阅读 · 0 评论 -
【Leetcode & Union-Find】使用并查集解决1319. Number of Operations to Make Network Connected
写在前面这是今天下午做leetcode contest的第三题,一开始看到的时候以为考察的是图的连通性的问题,没能想出解决方法,后来看Discussion,发现大家都用到了Union-Find,正好《算法》也看到Union-Find,于是就去把这章看完了再来做,下面会先介绍Union-Find,然后写解题思路。Union-Find(并查集)由Dynamic Connectivity Pro...原创 2020-01-16 20:01:42 · 321 阅读 · 0 评论 -
【Leetcode Medium】1318. Minimum Flips to Make a OR b Equal to c
原题链接题目描述Given 3 positives numbers a, b and c. Return the minimum flips required in some bits of a and b to make ( a OR b == c ). (bitwise OR operation).Flip operation consists of change any single...原创 2020-01-16 14:19:11 · 256 阅读 · 0 评论 -
【Leetcode Medium】3. Longest Substring Without Repeating Characters
原题链接题目描述找到一个字符串中不出现重复字符的最长字符串并返回该子串长度解题思路发现碰到这种问题我的第一反应永远是暴力解法×固然能完成题目,但效率是真的低下qwq最暴力的就是O(n²),两个for循环嵌套找子串,比较简单,代码就不贴了其他解法法一:滑动窗口——解决字符串问题&数组问题的常用方法和暴力解法的基本思想是相同的,使用hashset来模拟滑动窗口找到符合条...原创 2020-01-13 14:43:54 · 98 阅读 · 0 评论 -
【Leetcode Easy】110. Balanced Binary Tree
原题链接题目描述判断一棵二叉树是不是平衡二叉树(每个节点的左右子树高度差不超过1)解题思路思路比较简单,就是遍历每一个节点,比较左右子树的高度,如果有任何一个节点的高度差超过了1,那么就不是平衡二叉树所以解题的关键步骤在于获取子树的高度,代码如下: public int getHeight(TreeNode node) { if (!res) ...原创 2020-01-13 13:17:48 · 184 阅读 · 0 评论 -
【Leetcode Easy】108. Convert Sorted Array to Binary Search Tree
原题链接题目描述Given an array where elements are sorted in ascending order, convert it to a height balanced BST.For this problem, a height-balanced binary tree is defined as a binary tree in which the dep...原创 2020-01-11 13:54:46 · 115 阅读 · 0 评论 -
【LeetCode】42. Trapping Rain Water
原题链接碎碎念在前面没想到第一次做leetcode的hard题就是在cpp机考的时候,我真的哭得好大声机考的时候根据给的例子找了种方法出来,结果只符合那个栗子,其它用例都过不了×然后就一直在纠结这个算法直到最后的时候好像稍微有点思路了,但没来得及写很多不过知道这题是leetcode上的,所以结束了就去用最后想到的思路写了一下,代码如下我的解法大致思路是:维护两个指针一头一尾,分层...原创 2019-11-07 17:19:01 · 121 阅读 · 0 评论 -
【LeetCode Easy】496. Next Greater Element I
原题链接我的思路:按stack的tag找到的这题,结果第一个AC的思路完全没有用到stack(orz一个直观且简单且时间复杂度高的思路,三个for循环嵌套,很好理解,不多做解释了,最坏情况下的时间复杂度是O(n * m²) (其中n和m分别为nums1的长度和nums2的长度class Solution { public int[] nextGreaterElement(int[]...原创 2019-07-29 14:33:04 · 123 阅读 · 0 评论 -
【LeetCode Easy】155 Min Stack
原题链接Description:Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) – Push element x onto stack.pop() – Removes the element on top of the stac...原创 2019-07-21 14:45:57 · 108 阅读 · 0 评论 -
【LeetCode Easy】020 Valid Parentheses
Easy 020 Valid ParenthesesDescription:“()” “[]” "{}"三种括号匹配问题,判断参数字符串是否满足匹配要求如:“({[]})” true “[{})” falseNote:空串为trueMy Solution:括号匹配问题是栈的典型应用,遇到左括号,入栈,遇到右括号,看栈顶是否是相应的左括号,若不是,则false时...原创 2019-07-19 10:38:26 · 102 阅读 · 0 评论 -
【LeetCode Easy】014 Longest Common Prefix
Easy 014 Longest Common PrefixDescription:find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”. (注意要检查参数数组是否为空或==null)Exampl...原创 2019-07-19 10:02:46 · 100 阅读 · 0 评论 -
【LeetCode Easy】013 Roman to Integer
Easy 013 Roman to IntegerDescription:将罗马字母的字符串转换为代表的整数Roman numerals are usually written largest to smallest from left to right. However, there are six instances where subtraction is used:I can ...原创 2019-07-19 09:58:56 · 113 阅读 · 0 评论 -
【LeetCode Easy】009 Palindrome Number
Easy 009 Palindrome NumberDescription:Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.Example123: true-123: false10: falseM...原创 2019-07-19 09:54:51 · 109 阅读 · 0 评论 -
【LeetCode Easy】007 Reverse Integer
Easy 007 Reverse IntegerDescription:Given a 32-bit signed integer, reverse digits of an integer.**Assume we are dealing with an environment which could only store integers within the 32-bit signed...原创 2019-07-19 09:53:42 · 108 阅读 · 0 评论 -
【LeetCode Easy】001 Two Sum
还是决定把博客搬到这里来啦原博客地址https://segmentfault.com/u/noora_5cb2ecd92531a/articlesEasy 001 Two SumDescription:Given an array of integers, return indices of the two numbers such that they add up to a spec...原创 2019-07-19 09:51:44 · 94 阅读 · 0 评论