zangdaiyang 2020-05-15
前往:LeetCode 121. 买卖股票的最佳时机
今天,你刷LeetCode了吗?最近,GitHub上这样一套LeetCode笔记火了。一位Java研发工程师分享了一个名为「LeetCode题目分类与面试问题整理」,一时间获得1300星。这篇笔记的作者叫袁广鑫,面试三十多家互联网公司亲历整理,曾拿到字节、
一看就会,一做就废??给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。s 仅包含小写英文字母。indices 的所有的值都
在一个直方图中, 找到最大的矩形.我一开始想到的解题方法是通过分治的方法进行排序.方法如下,首先找到最小的数字,那么这个最小高度的矩形可以算出,然后分别计算它的左边的部分,和右边的部分,三者之间取最大值.这种方法的算法复杂度是O,极端情况是O.2,就是连续
今天是LeetCode专题第50篇文章,我们来聊聊LeetCode中的81题Search in Rotated Sorted ArrayII。它的官方难度是Medium,点赞1251,反对470,通过率32.8%。现在给定一个target,要求返回一个bo
if { //indexOf方法的返回值不为-1的话就说明找到了该元素。return [nums.indexOf, nums.length] //返回一个数组[差值的下标,]. 这是别人的答案,我只加了注释以表示对它的理解,第一次接触LeetCode,实
给你一个字符串 path,其中\的值可以是 ‘N‘、‘S‘、‘E‘ 或者 ‘W‘,分别表示向北、向南、向东、向西移动一个单位。机器人从二维平面上的原点 处开始出发,按 path 所指示的路径行走。如果路径在任何位置上出现相交的情况,也就是走到之前已经走过
Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference o
Given the root node of a binary search tree and a value. You need to find the node in the BST that the node‘s value equals the
如果前人认为这个一种学习提高或者检验能力的成功实践。而自己目前又没有更好的方法,那就不妨试一试。而不管作为面试官还是被面试者,编码题最近越来越流行。先举个大家使用比较多的算法:LRU,在Java的实现中实现特别简单。实际上动手实现一遍,LRU就再也不会忘了
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {. long area1=(C-A)*(D-B),area2=(G-E)*(H-F);if(C<=E||
Given a set ofdistinctpositive integers, find the largest subset such that every pair of elements in this subset satisfies:. If
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这与 LeetCode 目前使用的方
正则表达式这道题对我来说是真的难,花了两天的时间才做出来。做这道题首先需要注意的是点号`.`可以匹配任何字符,字符加星号`*`表示零个或者多个该字符,例如a*表示零个或者多个a,所以对于正则表达式中,后面不跟*的字符,在字符串s中必须找到对应的字符,对于正
不积跬步,无以至千里;不积小流,无以成江海。二分查找又称折半查找,顾名思义就是每查找比较一次,就会去掉一半的不匹配项,重复执行此步骤直到找到目标元素或者不可以在分割。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。如果目标字母target =
| name | continent | area | population | gdp |. | Afghanistan | Asia | 652230 | 2550
Q:在一个 2 x 3 的板上有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用?来表示.一次移动定义为选择?与一个相邻的数字进行交换.最终当板?给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 。对于这种计
[2] Most consistent ways of dealing with the series of stock problems. 其实文章 [1] 是文章 [2] 的「二次创作」,建议先阅读 [2] 后再阅读 [1] 。股票买卖问题的本质是状态
Given a binary treeroot, a nodeXin the tree is namedgoodif in the path from root toXthere are no nodes with a valuegreater thanX
定义状态dp[i][j]表示s的前i个字符和p的前j个字符是否匹配,注意前i个字符的下标是0~i-1. s[i-1] == p[j-1]或p[j-1] == ‘.‘:当前尾部两个字符完全匹配,则dp[i][j] = dp[i-1][j-1]. s[i-1]
int cout[105]={0};int res=0;cout[height]++;int j=0;if(heights[j++]!=i) res++;return res;};
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]. 给定一个非负整数c,你要判断是否存在两个整数 a 和 b,使得a2 + b
我们只能着眼于二进制上了,我们先将状态记录缩小到记录目标数字的每一个二进制上.那么这题就会变成遍历所有数,一个二进制位出现1的次数对3取余是否为1,若为1,那么我们目标数字的这一位也就是1.我们要运用逻辑门的想法设计一个计数器.计数到3就回归0.对于每一个
985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大。然而,真正的人才什么时候都紧缺,搞扎实自己的基本功比什么都重要。心态放平,好好刷leetcode,好offer总在不远处。近
LeetCode 面试题64. 求1+2+…求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?著作权归领扣网络所有。* @Description: 1-利用短路&&a
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?著作权归领扣网络所有。bit位不同异或结果为1,否则为0;* @Description: 1-直接异或所有数,剩下的即为
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大。”输入: root = [3,5,1,6,2,
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于??你可以假设数组是非空的,并且给定的数组总是存在多数元素。著作权归领扣网络所有。HashMap统计,且同时检测当前值是否是多数;把大于一半的那个数作为一部分,把其他数作为另一
两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false?。push, pop() -> 5, pop() -> 3, pop() ->
LeetCode 面试题31. 栈的压入、弹出序列。前往:LeetCode 946. 验证栈序列
实现pow(x,n),即计算 x 的 n 次幂函数。
leetcode 4.寻找两个有序数组的中位数。# 将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。leetcode 11.盛最多水的容器。leetcode 33.搜索旋转排序数组。leetcode 34.在排序数组中查
roman = dict(I=1, V=5, X=10, L=50, C=100, D=500, M=1000). (‘M‘, 1000),(‘CM‘, 900), (‘D‘, 500), (‘CD‘, 400), (‘C‘, 100),(‘XC‘, 90
leetcode 3.无重复字符的最长子串。s_dict, start, cur_len, max_len = {}, 0, 0, 0. res = [‘‘ for _ in range]. leetcode 8.字符串转换整数 . leetcode 14
罗马数字包含以下七种字符:I,V,X,L,C,D和M。例如, 罗马数字 2 写做 II,即为两个并列的 1。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为?每一项是一个从?一张为期三十天的通行证售价为?通行证允许数天无限制的旅行。中列出的每一天的旅行所需要的最低消费。在第 1 天,你花了 costs[0]
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为 和 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且n的值至少为 2。 图
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。著作权归领扣网络所有。要想最终拼接值最小,需要尽可能把较小的数拼接在前面;两个字符串的拼接比较,字符串的拼接比较结果与值的比较一致;把nums转为String类型的
LeetCode Mini Parse and Flatten Nested List Iterator. 这道题和我在面试阿里云时遇到的算法题很相似。本题是解析嵌套的整数,当时的题是解析嵌套的HashMap. 懒得说题目细节了,直接把LeetCode原文
1. 用hashset存储wordDict,查找效率高;unordered_map<int,vector<string>>记忆数组,存储从位置i开始,所有可能的情况。
p[i][j]表示s[i...j]是否为回文;dp[i]表示s[0...i]有多少种切割方法。第一个循环i,遍历字符串中的每一个字符;第二个循环j,遍历0到i,在j处切割为[0,j-1]和[j,i],如果[j,i]为回文,则更新dp[i]。
下面对两种解法分别进行探讨。对于滑动窗口法需要设置两个指针,在对字符数组进行遍历的过程中每移动一个字符就要使用一次遍历判断一次该字符是否已经存在于先前存在的窗口中,如果存在,则将首指针指向前一重复元素的后一位,实现滑动的目的。得到的子串的长度每次都是尾指针
就是说从开头遍历,一定是严格递增的,直到到达峰值,然后严格递减到末尾,那么可以从开头进行 while 循环,若当前数字小于右边的数字,则i自增1,为了避免溢出,i只能遍历到倒数第二个数字,这样当循环结束的时候,i指向的数字是大于等于右边的数字,是潜在的峰值
Given a 2D grid consists of 0s and 1s . An island is a maximal 4-directionally connected group of 0s and a closed island is an
给出一个区间的集合,请合并所有重叠的区间。解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。著作权归领扣网络所有。按区间起始位置升序排序,新建与源数组长度相同的结果数组rst,并把第一个区间添加进去,此时rst长度为k=1;返回rst的实际长度的
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.给定一个字符串 s,找到
一面的话通常是选择题 + 编程题,还有些公司机试都是编程题。选择题则是计算机基础知识涉及计算机网络,操作系统,数据库,编程语言等等,这里如果有些同学对计算机基础心里没有底的话,可以去牛客网上找一找 历年各大公司的机试题目找找感觉。用自己最熟悉什么语言,但最
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。= 的时候, 执行用时 :56 ms, 在所有 JavaScript 提交中击败了99.89%的用户.
今天看到了一个极好的算法开源库,手把手撕LeetCode题目,扒各种算法套路的裤子。开源短短1个多月,收获了近2万的star,可见该项目的质量之高。之所以推荐,是因为作者的文字绝对干货良心,文字流畅,引人入胜。不是干巴巴的写算法题的解,分析下时间复杂度。做