leetcode

单调栈整理

与世无争的帅哥 提交于 2019-11-27 21:25:18
单调栈 最近做题,遇到不少单调栈的问题,整理一下; 参考博客 coordinate_blog ; 单调栈需要处理问题的情形是回答,比当前元素更大/更小的下一个或者前一个数; leetcode. 42 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水? 注意这个单调栈的写法,之前自己写得是不是太复杂,为什么最后stack非空的情况不需要考虑?是因为这时候中间的部分都已经算过了 class Solution: def trap(self, height: List[int]) -> int: stack = [] res = 0 for i in range(len(height)): while stack and height[stack[-1]]<height[i]: tmp = stack.pop() if not stack: break res += (min(height[stack[-1]],height[i])-height[tmp])*(i-stack[-1]-1) stack.append(i) return res 其实自己差不多已经写出来了,但是中间的多了很多不必要的考虑。还是在动手写写之前没有考虑清楚就下手,最为致命; 还是你的解题思路不对,没有想清楚就下手,必须逼迫自己按照合理的解题思路写题; class

【leetcode】1160. Find Words That Can Be Formed by Characters

亡梦爱人 提交于 2019-11-27 21:03:15
题目如下: You are given an array of strings words and a string chars . A string is good if it can be formed by characters from chars (each character can only be used once). Return the sum of lengths of all good strings in words . Example 1: Input: words = ["cat","bt","hat","tree"], chars = "atach" Output: 6 Explanation: The strings that can be formed are "cat" and "hat" so the answer is 3 + 3 = 6. Example 2: Input: words = ["hello","world","leetcode"], chars = "welldonehoneyr" Output: 10 Explanation: The strings that can be formed are "hello" and "world" so the answer is 5 + 5 = 10. Note: 1 <=

本周学习小结(19/08 - 25/08)

烈酒焚心 提交于 2019-11-27 20:35:51
LeetCode 本周有进展。 学习笔记之LeetCode - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/5528520.html 本周完成Backtracking。 Explore - LeetCode - Backtracking https://leetcode.com/explore/interview/card/top-interview-questions-medium/109/backtracking/ 学习笔记之Problem Solving with Algorithms and Data Structures using Python - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/10454395.html Database / Linux / Machine Learning / Python / MISC 本周有进展。 学习笔记之Database / SQL - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/1954146.html 学习笔记之Linux / Shell / QSHELL - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p

LeetCode:Missing Number

心不动则不痛 提交于 2019-11-27 20:12:02
1、题目名称 Missing Number (缺失的数字) 2、题目地址 https://leetcode.com/problems/missing-number 3、题目内容 英文:Given an array containing n distinct numbers taken from 0, 1, 2, ..., n find the one that is missing from the array. 中文:给出一个包含了n个不同数字的数组,从0开始一直到n,找出缺失的数字。如果数组是连续的则返回n+1。 例如:给出的数组为 [0, 1, 3] 则返回2 4、解题方法1 第一种方法是对原数组进行排序,然后使用一个计数用的变量按序考察排序后的数组,如果数组的第n位不等于n,则返回n,否则返回数组长度加一。 一段实现本方法的Java代码为: import java.util.Arrays; /** * 功能说明:LeetCode 268 - Missing Number * 开发人员:Tsybius2014 * 开发时间:2015年8月25日 */ public class Solution { /** * 找出丢掉的数字 * @param nums * @return */ public int missingNumber(int[] nums) { Arrays

训练计划

感情迁移 提交于 2019-11-27 18:52:56
第一阶段训练计划(codeforces稳定到1400分以上,在div2打铁): 1.有codefoces div2或atcoder beginner contest比赛就参加(若在同一天晚上则只参加一个,一方面能将注意力全部集中于一个比赛, 一方面赛后补题的量不会那么大,不会那么累)。 然后目标是div2争取ABC题,赛后补题则是在补这三题的基础上,看看有没有其他题标签在1400及以下的(codeforces题目会有标签, 如标签是1400说明题目难度是1400分段的人能做出来的),如果超过1400了也要看看有没有算法标签,如果没有算法标签说明虽然难, 但是也是思维题,也值得看题解(ps.C题有时候也可能是1400以上,若涉及不会的算法,那也就放弃吧,不用补) atcoder则是争取AK,因为atcoder beginner contest的难度没有那么大,基本都是思维题,不涉及太多算法,我 上次就打过一场beginner contest,除了最后一题涉及树状数组以及容斥原理以外,其余题目题解都能看懂 补题最晚不超过一天(不然越拖越多) 2.在补完题且当天又不会有新比赛的情况下,刷以往codeforces div2的虚拟比赛,也像正式比赛一样对待,尽量一天一场 3.日常学新算法,上次校赛大概就是2到送分题(四渠注水+一道英文加法题)+ 2道kyrie写出来了的模拟类型的题 +

[好好学习] kick start round c- B

本小妞迷上赌 提交于 2019-11-27 16:24:17
鉴于Round E要到了... 错过这个村就没这个店了0.0所以整理一下 此处加一个大纲。markdown在博客园怎么用…… 算了格式在这先发出来吧。。and 要有目标qwq。! ## 题目2 Circuit Board 这个在LeetCode上的84 是个经典问题。LeetCode我都还只做到了.. 反正很少的,也没有接手Hard,easy感觉总是水水过去,medium也很少很少。 下一步说不定可以在github上维护一下?分单独的题解和分开的题解……完全可以在幕布上写了再移植过去的。(心情复杂.jpg)也可以不移植 ### 题意 300*300矩阵,给定一大堆数字,使得每行中的最大值、最小值的差不超过K,满足这些条件的最小子矩阵是多少。 ### false (大部分false的删了……) o(n^3)的做法。 开始想的是并查集归属,串串儿一样噜过去,但是其实有点emmmm 对于这样的情况,只连续的找到个体然后从个体开始蔓延是不行的。 2 2 2 4 4 2 2 2 2 2 2 4 有种感觉,你需要抛开种族偏见,不能这样狭隘的去想,而且n很小,可以直接枚举两维,再来一维 首先呢,我们用一个三维布尔数组来记录,f[i][l][r],记录的是i行的从 l 处到 r 处,此段里能否达到"不超过E"的条件。 这里是很死板的,甚至不用考虑最大值如果有两个的问题,只需预处理,枚举l和r。 好

LeetCode-数组专题

巧了我就是萌 提交于 2019-11-27 15:40:35
27. Remove Element 移除指定元素 https://leetcode.com/problems/remove-element/ 题目:给定数组nums和值val,移除该值的所有实例并返回新的长度。不要为另一个数组分配额外的空间,必须通过使用O(1)额外内存就地修改输入数组来实现这一点。元素的顺序可以更改,在新的长度之外,留下什么并不重要。 思路:需要一个变量用来计数,然后遍历原数组,如果当前的值和给定值不同,我们就把当前值覆盖计数变量的位置,并将计数变量加1。 41. First Missing Positive 丢失的最小正整数 https://leetcode.com/problems/first-missing-positive/ 题目:给定一个未排序的整数数组,查找丢失的最小正整数。 思路:第一种思路就是将所有元素存入HashSet中,从 1 开始查找丢失的最小正整数。第二种思路是 48. Rotate Image 旋转图像 http://oj.leetcode.com/problems/rotate-image/ 题目:给一个表示图像的n×n二维矩阵。将图像旋转90度(顺时针方向)。 思路:方法一,以四个数为一组来进行旋转。首先确定第一个位置旋转后的新位置,记该新位置原本的数旋转后的位置为第三个数,则第三个数旋转后的位置为原来的第四个数

Github 与 Git Bash 的入门使用

女生的网名这么多〃 提交于 2019-11-27 14:58:34
Github 与 Git Bash 的入门使用 1. 注册 Github 账号 2. 新建仓库 Github 页面右上角: 填写仓库信息: 示例 : Repository name:LeetCode 注意 :该命名不能用中文 Descriptioin(描述):LeetCode刷题 Public(Private需要付费) Initialize this repository with a README 注意 :勾选时,自动生成说明文档 README.md 3. 创建仓库成功后,若选择自动生成说明文档,则仓库右边菜单栏的 Clone or download 中生成一个网址(后面要用到);若未选择自动生成说明文档,则该网址在页面中间位置。 4. 下载安装 Git Bash 5. Git Bash 中创建秘钥,输入以下命令后回车 N 次(直到没有提示信息) ssh-keygen -t rsa -C “your email address” 6. 在电脑 C:\Users\your computer name\.ssh 路径下找到 id_rsa.pub 文件,打开并复制秘钥 7. Github 页面右上角菜单栏头像处进入 settings 8. settings 的左边菜单栏进入SSH and GPG keys 9. 添加秘钥:New SSH key > Title > Key(粘贴秘钥 )

Leetcode---单链表

倾然丶 夕夏残阳落幕 提交于 2019-11-27 12:35:12
单链表 本博客的题均为leetcode上的摘录,都是我的刷题答案,仅做参考,若有错误,欢迎指正 前面提到的数组和字符串跟我们这里要说的链表都属于数据结构里面的线性表; 所谓线性表,就是在内存中存储的数据元素都是连续的,一一对应的,也可以理解成是一串一串的。计算机通常将线性表的数据按照前后顺序将他们连接在一起,方便程序遍历和操作。 线性表又分为顺序存储结构和链式存储结构: 顺序存储结构顾名思义,就是该线性表的所有元素都是按照内存地址顺序连续存储的,通常是在内存地址里面找到一个起始地址,然后根据每个元素占用的地址位置大小,以占位的形式占用连续的内存地址空间,然后按照顺序将数据元素逐个存储到内存地址当中;这样的存储结构所需的内存空间是固定的,一般在定义或者初始化的时候会确定其大小,然后在内存地址当作占位所需的空间;由于他们的内存地址都是连续的,所以只需要知道起始地址,就能根据索引直接访问该数据结构里面的所有数据元素;顺序存储结构主要的体现形式是数组和字符串,他们都是按照内存地址顺序在一块内存中连续存储多个数据元素的结构。 链式存储结构相当于顺序存储结构来说,他的所有数据元素的存储地址并不是连续的,而是杂乱无章的,而且地址在哪是程序员无法确定的,都是由计算机来自由分配,程序员只是申请指定大小的内存地址空间而已。链式存储结构最主要的体现就是链表