leetcode

LeetCode All in One 题目讲解汇总(持续更新中...)

余生颓废 提交于 2020-02-11 05:24:39
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided input is the start and end coordinates of the horizontal diameter. Since it's horizontal, y-coordinates don't matter and hence the x-coordinates of start and end of the diameter suffice. Start is always smaller than end. There will be at most 10 4 balloons. An arrow can be shot up exactly vertically from different points along the x-axis. A balloon with x start and x end bursts by an arrow shot at x if x start ≤ x ≤ x end . There is no limit to the number of arrows that can be shot. An arrow

本周学习小结(10/02 - 16/02)

房东的猫 提交于 2020-02-10 08:25:45
LeetCode 本周无进展。需要及时复习。 学习笔记之LeetCode - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/5528520.html Explore - LeetCode - Design https://leetcode.com/explore/interview/card/top-interview-questions-medium/112/design/ Explore - LeetCode - Math https://leetcode.com/explore/interview/card/top-interview-questions-medium/113/math/ 学习笔记之Problem Solving with Algorithms and Data Structures using Python - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/10454395.html C++ / Database / Git / Linux / Python / MISC 本周有进展。现在对文章选取贵精而不贵多。 学习笔记之C / C++ - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/10437163

LeetCode All in One 题目讲解汇总(持续更新中...)

血红的双手。 提交于 2020-02-09 07:48:34
Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3} , 1 \ 2 / 3 return [1,2,3] . Note: Recursive solution is trivial, could you do it iteratively? 一般我们提到 树的遍历 ,最常见的有先序遍历,中序遍历,后序遍历和层序遍历,它们用递归实现起来都非常的简单。而题目的要求是不能使用递归求解,于是只能考虑到用非递归的方法,这就要用到stack来辅助运算。由于先序遍历的顺序是"根-左-右", 算法为: 1. 把根节点push到栈中 2. 循环检测栈是否为空,若不空,则取出栈顶元素,保存其值,然后看其右子节点是否存在,若存在则push到栈中。再看其左子节点,若存在,则push到栈中。 代码如下: 解法一: class Solution { public: vector<int> preorderTraversal(TreeNode* root) { if (!root) return {}; vector<int> res; stack<TreeNode*> s{{root}}; while (!s.empty()) {

[leetcode数组系列]4 最大子序和

橙三吉。 提交于 2020-02-08 23:04:32
文章目录 一 题目 1 leetcode连接 2 题目解析 3 代码实现 4 收尾 这是我的面试经历以及整理的相关面试高频题目,希望对大家有帮助。 面试集锦 老规矩,不白嫖,点赞再看! 一 题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 1 leetcode连接 原题连接 小蓝一看,心想首先需要找到所有的子数组,然后对子数组求和,最后比较。不是很清楚?没关系,下面具体阐述下! 2 题目解析 因为我们涉及到数组和的比较,假设数组第一个元素为最终需要返回的值,定义为result。 遍历Nums寻找 大于0 的数,保留当前sum值并累加。如果当前数组元素num值 小于0 直接赋值给sum。 为什么寻找大于0?这是本题的 关键 。在此大家可以自行思考1分钟!文后解答,这样印象会更深刻哈。 每次对当前的result值和sum值比较,将较大值赋值给result。 result=max(sum,result)。 为什么判断大于0? 如果遍历的数组元素全是负数(<0),我们就取 最大的负数 。(-1)+(-1)=-2,-2<-1.负数只会 越加越小 。 如果当前遍历的数组和为正数(>0)

LeetCode——Two Sum两数之和

柔情痞子 提交于 2020-02-08 18:46:35
LeetCode 题目及解析 题目: Given an array of integers, return indices of the two numbers such that they add up to a specific target. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 You may assume that each input would have exactly one solution, and you may not use the same element twice. 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 Example: 示例: 给定 nums = [2, 7, 11, 15], target = 9 Given nums = [2, 7, 11, 15], target = 9, 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. 思路 这道 Two Sum 的题目作为 LeetCode 的开篇之题 ,乃是经典中的经典,正所谓‘ 平生不识 TwoSum,刷尽 LeetCode

算法总结—链表

偶尔善良 提交于 2020-02-08 15:27:50
链表题目对算法的要求度不高,但实际写的过程中需要注意语言细节,考虑精细度的地方很多。 1.链表结构与基本操作 1.1 添加节点 一般情况: cur ->next = prev ->next; prev ->next = cur; 表头插入: cur ->next = head; head = cur; 1.2删除节点 一般情况:(已知待删除节点的前驱节点) ListNode* temp = prev->next; prev->next = prev->next->next; delete temp; 表头元素删除: ListNode* temp = head->next; delete head; head = temp; 变形题目:(已知待删除节点,且不知道头指针位置,leetcode237 https://leetcode.com/problems/delete-node-in-a-linked-list/) 思路:将待删除节点后继节点内容拷贝至当前节点,然后删除后继节点,相当于以后继代替当前节点被删除 class Solution { public: void deleteNode(ListNode* node) { node->val = node->next->val; ListNode* temp = node->next; node->next = node-

3. 无重复字符的最长子串 141. 环形链表 171. Excel表列序号 203. 移除链表元素

谁都会走 提交于 2020-02-08 08:01:01
3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class Solution: def lengthOfLongestSubstring(self, s: str): st = {} i, ans = 0, 0 for j in range(len(s)): if s[j] in st: i = max(st[s[j],i]) ans = max(ans, j-i+1) st[s[j]] = j + 1 return ans 141. 环形链表

Leetcode#557. Reverse Words in a String III(反转字符串中的单词 III)

橙三吉。 提交于 2020-02-08 06:04:33
题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 思路 分割字符串,再逆序,拼接到字符串 代码实现 package String; /** * 557. Reverse Words in a String III(反转字符串中的单词 III) * 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 */ public class Solution557 { public static void main(String[] args) { Solution557 solution557 = new Solution557(); String s = "Let's take LeetCode contest"; System.out.println(solution557.reverseWords(s)); } /** * 分割字符串,再逆序,拼接到字符串 * * @param s * @return */ public String reverseWords(String s)

记VsCode配置Leetcode刷题环境

谁说我不能喝 提交于 2020-02-08 05:06:39
配置Nodejs环境可以按照下面网址进行 https://blog.csdn.net/u012830533/article/details/79986984。 期间可能会遇到 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件 这样的问题。解决方案如下: 手动配置PATH 1.右键单击此电脑选择属性 2.选择高级系统设置 3.将你的Nodejs安装路径填上去。如我的是G:\Program Files\nodejs 然后启动cmd(因为环境变量配置后一般是需要重启电脑才能生效的,这里可以选择不重启的方案) 1.在cmd命令行下输入 set %PATH%=c 2.然后关闭cmd 3.重启cmd,并输入path命令。查看环境变量中是否有你添加的那一条。 如果有证明环境变量已生效。如果没有说明环境变量没有手动配置成功,需要重新配置。 此时npm就可以使用了,继续按照教程中进行相关的操作即可。 最后验证Nodejs是否已成功安装并配置好环境变量 使用一行命令即可 node -v (注:如果在配置leetcode刷题环境是出现问题,最好先将leetcode插件卸载,等nodejs安装好之后再重新安装leetcode插件) 来源: CSDN 作者: bingbangbingbang 链接: https://blog.csdn.net/bingbangbingbang/article

[LeetCode] 160. 相交链表

假装没事ソ 提交于 2020-02-08 01:13:26
1 题目描述 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。 示例 3: 输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2 输出:null 输入解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。 解释:这两个链表不相交,因此返回 null。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n)