![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日一题
是老哥吧
我的努力,会让你的点赞变得更有意义
展开
-
Leetcode.787.K站中转最便宜的航班
Leetcode.787.K站中转最便宜的航班题目参控官方思路:1、考虑中转花费最少费用问题,方法动态规划2、使用f[t][i]表示恰好通过t次航班,从src到达城市i需要的最小花费,状态转移过程假设最后一次航班起点为j,则:f[t][i] = min {f[t-1][j] + cost(j,i)}3、(j,i)表示航班数组,表示从J到I的航班花费4、意义:枚举最后一次航班起点J,那么前t-1次航班的最小花费为f[t-1][j]加上最后一次航班的花费cost(j,i)中的最小值,即为f[t][原创 2021-08-24 16:31:09 · 160 阅读 · 0 评论 -
Leetcode.611.有效三角形个数
Leetcode.611.有效三角形个数题目难度:中等题目(官方)思路:1、三角形满足两边之和大于第三边,或两边之差小于第三边。2、将数组排序之后 下标 i<j<k,则需要满足条件,nums[i]+nums[j]>nums[k]3、只需要找到最大的K的下标 求将 k-j累加的值为三角形个数。javaclass Solution { public int triangleNumber(int[] nums) { int ans = 0;原创 2021-08-04 14:53:04 · 159 阅读 · 0 评论 -
Leetcode.581.最短连续子数组
Leetcode.581.最短连续子数组题目难度:中等题目思路:1.判断最短的连续子序列,升序序列2.只要找到中间最短的序列不是有序即可3.将数组分为三段,NumsA,NumsB,NumsC,只需要找到NumsB4.复制数组,进行排序,然后比较两端,记录left和right,ans = right - left + 1代码:class Solution(object): def findUnsortedSubarray(self, nums): """原创 2021-08-03 10:19:14 · 164 阅读 · 0 评论 -
Leetcode.743.网络延迟时间
Leetcode.743.网络延迟时间题目题目难度:中等思路:1、题目求解经某节点K需要多久能使所有的节点都接收到信号,想到单源最短路径求解。2、边权值都是1,采用单源最短路径路径的思想,采用迪杰斯特拉算法。3、迪杰斯特拉算法:1)以某个节点为起点,分别到各点的最短距离。2)举例:S1:1->2最短距离为2;S2:1->3最短距离为1->2->3=3;S4:1->4最短距离为1->2->4 = 4;4、题目意思从节点K出发,到达节点T的时间原创 2021-08-02 15:42:18 · 75 阅读 · 0 评论 -
Leetcode.1833雪糕的最大数量
Leetcode.1833雪糕的最大数量题目难度:中等题目思路:排序 + 贪心1、要想充分利用所有钱买到尽可能多的雪糕;2、想到贪心算法,首先将数组从小到大进行排序,比较当前金额与数组元素;3、如果当前金额能够买当前costs[i]的雪糕,当前金额coins = coins - costs[i];4、雪糕个数count = count + 1;python代码class Solution(object): def maxIceCream(self, costs, coins):原创 2021-07-02 19:11:15 · 97 阅读 · 0 评论 -
Leetcode374.猜数字大小
Leetcode.374.猜数字大小题目难度:简单题目链接:查看思路:1、猜1-n中选出的数字,必然想到查找操作;2、二分法解决;# The guess API is already defined for you.# @param num, your guess# @return -1 if my number is lower, 1 if my number is higher, otherwise return 0# def guess(num):class Solution:原创 2021-06-14 10:55:13 · 126 阅读 · 0 评论 -
Leetcode.442.数组中重复的数据.41.缺失的第一个正数.271.H指数
Leetcode.442.数组中重复的数据题目难度:中等题目:给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-all-duplicates-in-an-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。原创 2021-05-15 20:08:48 · 53 阅读 · 0 评论 -
Leetcode.12.整数转罗马数字
Leetcode.12.整数转罗马数字题目难度:简单题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27原创 2021-05-14 10:40:04 · 91 阅读 · 0 评论 -
Leetcode.485.最大连续1的个数 ;495.提莫攻击;414.第三大的数;628.三个数最大乘积
Leetcode.485最大连续1的个数题目难度:简单题目:原题链接思路:在注释中已经给出:class Solution { public int findMaxConsecutiveOnes(int[] nums) { //遍历 // sum用于记录最大的连续1的个数 int sum = 0; //temp用于记录当前段连续1的个数 int temp = 0; //遍历 fo原创 2021-05-13 23:08:53 · 123 阅读 · 0 评论 -
Leetcode.137只出现一次的数字--每日一题
137.只出现一次的数字题目难度:中等题目:原题链接思路:1、原题目中重复的数字都是出现三次,我们只需要找出出现一次的就可以;2、用python写的正好可以利用字典;3、如果你其他语言,用哈希表一样的;4、暴力法,遍历;下面给出字典方法class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int "原创 2021-04-30 16:52:44 · 60 阅读 · 1 评论 -
Leetcode.403青蛙过河--每日一题
Leetcode.403青蛙过河题目难度:困难题目:原题链接思路:1、青蛙能否成功到达最后一块石头,与当前的位置和前一步的距离有关,只要跳的步数在[lastDis-1,lastDis+1]内到达下一块石头;2、官方代码class Solution { //存放状态(当前位置和前一个跳跃距离) private Boolean[][] rec; public Boolean canCross(int[] stones) { int n = stones.leng原创 2021-04-29 09:45:53 · 98 阅读 · 0 评论 -
Leetcode.633.平方数之和--每日一题
Leetcode.633.平方数之和–每日一题题目难度:中等题目:原题链接思路:双指针法1、这个题目做法之前也遇到过许多次了,题目需要找到两个数使他的平方和等于目标数;2、首先双指针左边,i=0,右边j的取值我一开始直接取j = c,一想这不是费力不讨好嘛,哈哈哈完全没必要3、j的取值从sqrt©开始4、将ii + jj的值与c进行比较,如果大了,说明j取值要减小,则j–;5、否则 i++class Solution(object): def judgeSquareSum(self原创 2021-04-28 11:33:51 · 72 阅读 · 0 评论 -
Leetcode.1011在D天内送达包裹的能力
Leetcode.1011在D天内送达包裹的能力题目难度:中等题目链接:原题链接思路:这道题,起初,我是满头问号?要求在D天内将传送带的包裹全部从 一个港口到达另一个港口,装载重量不会超过船的最大运载量,返回最低运载能力。我思考了半天,我没明白说的什么意思,果然,书读百遍,奇迹自现。(可能是我太笨了)即在D天内,将所有货物全部运送完,并不超过运载能力(好像是废话)1、最低装载量不能低于最大值,运载能力要大于下限值。2、采用二分查找的方法,找到一个最低运载能力能把所有货物在规定天数之内运送完原创 2021-04-26 13:35:01 · 92 阅读 · 0 评论 -
Leetcode.220.存在重复元素--每日一题
Leetcode.220.存在重复元素题目难度:中等题目:原题链接今天学习了这一篇大神的题解(下面有链接)采用滑动窗口的解决办法,滑动窗口的模板分享负雪明烛的模板滑动窗口的两个指针移动的过程和虫子爬动非常像:前脚不动,把后脚移动过来,后脚不动,把前脚向前移动;后脚不动,把前脚向前移动。def findSubArray(nums): N = len(nums) # 数组/字符串长度 left, right = 0, 0 # 双指针,表示当前遍历的区间[left, right],原创 2021-04-17 18:14:07 · 68 阅读 · 0 评论 -
Leetcode.179.最大数--每日一题
Leetcode.179.最大数–每日一题题目难度:中等题目:原题链接思路:1、今天这道题的核心将数字先转化为字符串,2、然后拼接,比较大小;3、其中compareTo()方法比较大小的机制是按照ASCII按位比较大小,4、比较(x+y)和(y+x)判断x,y谁应该排在前面,5、还要考虑如果是全零的元素数组,6、所以前一步要对字符数组排序,class Solution { public String largestNumber(int[] nums) { Stri原创 2021-04-12 20:05:11 · 80 阅读 · 0 评论 -
Leetcode.264.丑数II --每日一题
Leetcode.264.丑数II --每日一题题目难度:中等题目:原题链接今天的这道题我感觉比昨天难很多我写的超时了,唉。。。。题解用到了三指针和最小堆,我咋没想到呢,知识储备要加强贴出官方题解但是官方的三指针我没看懂,看了这位大佬的解释更容易理解class Solution { public int nthUglyNumber(int n) { int[] dp = new int[n + 1]; dp[1] = 1; int p2原创 2021-04-11 10:15:40 · 56 阅读 · 0 评论 -
Leetcode.263.丑数--每日一题
Leetcode.263.丑数前几天每日一题都是打卡过的,所以就没有更新啦题目难度:简单题目:原题链接思路:1、题目说,因子只包含 2、3、或/和5的2、分支语句实现(我太辣鸡了吧,哭叽叽)先放分支的class Solution { public boolean isUgly(int n) { //当n == 1 if(n == 0) { return false; } while原创 2021-04-10 09:28:54 · 62 阅读 · 0 评论 -
Leetcode.树专题
Leetcode.树专题写在前面,还记得之前分享一个大佬的刷题经验嘛,按专题来刷效果好一点。之前树专题只有三道题目,接下来树专题会连续更新,全部集中在这条。加油吧!标题110.平衡二叉树题目难度:中等题目:原题链接思路:1、平衡二叉树;2、左右子树的高度差不大于1,称为平衡二叉树;3、判断是否为平衡二叉树利用求左右子树高度差;4、定义一个高度函数,求左右子树高度;5、height(root);6、在这里解释为什么一个 return 0,一个return True.7、在求高度函数里原创 2021-04-08 09:56:06 · 102 阅读 · 1 评论 -
Leetcode.80删除有序数组中的重复元素--每日一题
Leetcode.80删除有序数组中的重复元素–每日一题题目难度:中等题目:原题链接思路:官方题解1、删除重复元素,注意是在有序数组中;2、重复数字会连续出现,之前做过这种题目;3、使用快慢指针,双指针法;class Solution { public int removeDuplicates(int[] nums) { int n = nums.length; if (n <= 2) { return n;原创 2021-04-06 13:16:37 · 75 阅读 · 0 评论 -
Leetcode.88.合并两个有序数组--每日一题
Leetcode.88.合并两个有序数组题目难度:简单题目:原题链接思路:1、nums1的空间为m+n;2、首先想到是先插入再排序;3、但是想到直接调函数岂不是更容易?4、啊,这,击败率。。。。。5、代码如下:class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { for(int i=m,k=0;i<m+n && k<n;i++,k++)原创 2021-04-05 21:53:15 · 101 阅读 · 2 评论 -
Leetcode.1143.最长公共子序列--每日一题
Leetcode.1143.最长公共子序列题目难度:中等题目:原题链接下面思路是官网的题解:转自官网题解思路:1、最长公共子序列问题是典型的动态规划问题;2、假设字符串test1和test2的长度分别为m,n,创建m+1行和n + 1列的二维数组dp,其中dp[i][j]表示test1[0,i]和test2[0,j]最长公共子序列的长度;3、test1[0,i]表示test1的长度为i的前缀,test2[0,j]表示test2的长度为j的前缀4、考虑动态规划的边界情况:当i = 0 时,原创 2021-04-03 13:57:55 · 114 阅读 · 0 评论 -
Leetcode.1006.笨阶乘
Leetcode.1006.笨阶乘题目难度:中等题目:原题链接思路直接贴上:官方题解这位大神的题解,绝了宫水三叶class Solution { public int clumsy(int N) { Deque<Integer> stack = new LinkedList<Integer>(); stack.push(N); N--; //控制运算符号 * / + - int ind原创 2021-04-01 11:49:42 · 67 阅读 · 0 评论 -
Leetcode.90.子集II--每日一题
Leetcode.90.子集II题目难度:中等题目:原题链接(今天我以为是二维矩阵II???不是嘛?不是)思路1、求子集的个数,需要去除重复;2、采用回溯的方法;3、插一条,今天看到了一个大佬总结的算法模板大佬主页,各种干货推荐推荐class Solution(object): def subsetsWithDup(self, nums): """ :type nums: List[int] :rtype: List[List[int]原创 2021-03-31 16:58:57 · 129 阅读 · 1 评论 -
Leetcode.74.搜索二维矩阵--每日一题
昨天力扣打完卡忘记更新了。Leetcode.74.搜索二维矩阵题目难度:中等题目:原题链接思路:方法一:暴力法暴力法,就很直接,要找target就遍历数组;两层for循环,解决;Java版暴力法的竟然击败了百分之76????????啊这。。。。。。class Solution { public boolean searchMatrix(int[][] matrix, int target) { //暴力法遍历矩阵 for(int i=0;i<matr原创 2021-03-30 20:29:09 · 140 阅读 · 1 评论 -
Leetcode.173.二叉搜索树迭代器--每日一题
Leetcode.173.二叉搜索树迭代器题目难度:中等题目:原题链接这是官方答案详细可以看这里/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * T原创 2021-03-28 11:42:28 · 182 阅读 · 0 评论 -
Leetcode.61.旋转链表--每日一题
Leetcode.61.旋转链表–每日一题题目难度:简单题目:原题链接直接把草稿贴上来啦/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode原创 2021-03-27 16:09:30 · 94 阅读 · 0 评论 -
Leetcode.83.删除排序链表中的重复值--每日一题
Leetcode.83.删除排序链表中的重复值–每日一题题目难度:简单题目:原题链接思路:今天和昨天的题目类似,区别就是这个简单,不用删除重复元素本身,只要把重复删除即可;由深到浅;话不多说,一次遍历即可;代码简单易懂;/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * L原创 2021-03-26 11:34:52 · 375 阅读 · 5 评论 -
Leetcode.82.删除排序链表中的重复值--每日一题
Leetcode.82.删除排序链表中的重复值题目难度:中等题目:原题链接思路:一开始以为只要删除重复元素,一提交,唉怎么错了,才发现题目要求把重复元素和其本身都删掉;注意题目中链表是排序好的元素,所以重复元素会连续出现;因此只需遍历一次链表即可把重复元素删除;由于在删除过程可能会把头节点删除,所以需要建立一个空节点p指向head;q指针是工作指针,用于遍历链表;q.next与q.next.next元素比较,如果相等,则将q.next.val赋值给temp;之后从q.next往后遍历找原创 2021-03-25 20:45:22 · 171 阅读 · 0 评论 -
Leetcode.456.132模式--每日一题
Leetcode.456.132模式题目难度:中等题目原题链接思路:132模式,中间的那个数字3,也指最大的那个数,利用贪心算法维护1是3左边最小的数字,2是3右边的数字,比3小但比1大的数字;从左到右遍历一次,遍历的数字nums[j]也就是132模式中的3;根据贪心思想,让1是3左边最小的元素,然后暴力求解nums[j+1…N-1]中找到132模式中的2即可;Python代码;class Solution(object): def find132pattern(self,nums):原创 2021-03-24 15:06:44 · 81 阅读 · 0 评论 -
Leetcode.341.扁平化嵌套列表迭代器--每日一题
Leetcode.341.扁平化嵌套列表迭代器题目难度:中等题目:原题链接思路要求输出,嵌套列表中元素,嵌套列表可以想到,DFS算法这道题目利用DFS思想(稍后会详细更新DFS算法和BFS算法)将数组转化为列表,进行求解下面给出java版代码/** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about原创 2021-03-23 19:37:44 · 63 阅读 · 0 评论 -
Leetcode.191.位1的个数--每日一题
Leetcode.191.位1的个数题目难度:简单题目原题链接话不多说,直接上代码count 用于统计1的个数;n与1进行&操作,用于判断末尾1的个数;之后右移,每次都是末尾相与操作;class Solution(object): def hammingWeight(self, n): """ :type n: int :rtype: int """ count = 0 whil原创 2021-03-22 22:01:13 · 62 阅读 · 0 评论 -
Leetcode.150.逆波兰表达式求值-每日一题
Leetcode.150.逆波兰表达式求值题目难度:中等题目原题链接思路:求解表达式的值,第一会想到堆栈来解决,逆波兰式求解和堆栈的先入后出特性一样;逆波兰式,就是由中缀表达得来;中缀表达式(题目所给形式),树的中序遍历,下面图片左边是中缀表达式,右边是后缀表达式后缀表达式,树的后续遍历;前缀表达式,树的前序遍历;判断是数字入栈,判断是运算符则出栈将两个元素运算结果代码,这是官方的代码,他写的比我的好,所以就贴官方的代码了class Solution原创 2021-03-20 15:28:18 · 138 阅读 · 0 评论 -
Leetcode1603.设计停车系统-每日一题
Leetcode1603.设计停车系统-每日一题题目难度:简单题目原题目请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现 ParkingSystem 类:ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有原创 2021-03-19 20:30:46 · 311 阅读 · 0 评论 -
Leetcode 92.反转链表II
Leetcode 92.反转链表II题目难度:中等1. 思路:题目给定left 和right,要求这中间的要反转;头插法实现;直接上图;一开始还想了一个count计数,发现多余了;设置一个p指针指向left位置的前一个节点,r指向left,q指向r->next;接下来就是头插法的经典步骤啦,图片中写出来啦‘;解释:q指向r->next;r->next指向q->next;这就实现q节点和r节点后一个节点连接,这样把q节点插过去的时候就不会断链,然后实现头插;q-原创 2021-03-18 20:35:00 · 132 阅读 · 0 评论 -
Leetcode 59.螺旋矩阵II
Leetcode 59.螺旋矩阵II今天的题和昨天的一样,哈哈哈哈哈参考大佬主页思路那今天就写一下具体的思路:1、要考虑初始位置 (0,0)2、移动的方向:上下左右,不过按照矩阵昨天画的图,从左上(0,0)往右移,3、边界问题,是方阵,m = n; 如果是右边界,则right-1;下边界,down-1;左边界,left+1;上边界,up+1;注:数字0标记边界;0可以代表我们已经遍历过了4、结束,所有元素都被遍历一遍了class Solution(Object): def genera原创 2021-03-16 19:48:44 · 104 阅读 · 0 评论 -
Leetcode 54.螺旋矩阵
Leetcode 54.螺旋矩阵学习:大佬主页这是另一篇参考递归参考clss Solution(object): def spirlOrder(self,matrix): #计算出矩阵的行列数 m = len(matrix) n = len(matrix[0]) #记录已经访问过的位置 visited = [0 for i in range(n) for j in range(m)] #更换方向 change_direction = {1:2,2:3,3:4,4:1}转载 2021-03-15 20:04:20 · 54 阅读 · 0 评论 -
Leetcode 705设计哈希集合
Leetcode 705设计哈希集合参考链接在时间空间上做权衡超大数组class MyHashSet: def __init__(self): self.set = [False]*1000001 def add(self,key): self.set[key] = True def remove(self,key): self.set[key] = False def contains(self,key): self.set[key]拉链法定长拉链法class MyH原创 2021-03-14 15:12:09 · 287 阅读 · 2 评论 -
Leetcode 706.设计哈希映射
Leetcode 706.设计哈希映射学习了这位大佬的,存着复习大佬主页HashMap是在时间和空间上做权衡的经典例子,不考虑空间,可以设计一个超大数组,使的每个元素都有单独的位置,不存在冲突,直接用一个无序的数组保存输入,每次查找的时候遍历一次数组。考虑,设计合适的哈希函数,(采用除留余法);冲突:拉链法和线性探测法;超大数组超大数组注解:将key值作为数组下标,value值存至数组下标key值对应处;由于范围是10^6所以,数组范围10e6+1每个数据都有单独的索引,不会出现冲突。c原创 2021-03-14 14:57:35 · 304 阅读 · 3 评论 -
Leetcode 227.基本计算机II
Leetcode 227.基本计算机II1. 思路(1)这道题要求实现基本计算机,一个字符串,有数字和非数字即运算符,这道题只有 + - * / 四种运算符,计算字符串的结果首先我就想到了用栈的思想,一开始两个栈一个存放 运算符,一个存放数字,空间占用很大;(2)采用先计算乘除,结果存入栈内,再计算 栈内的+ -(3)给出一开始写的,但总是通不过 ,就很离谱,把错误的也贴一下注:ord()函数是将字符转化为ASCII,所以ord(s[i]) - ord(‘0’)就得到数字的大小isdigit()原创 2021-03-11 21:56:14 · 119 阅读 · 0 评论