LeetCode刷题
大黑写代码
算法小白,正在修炼。
展开
-
34.在排序数组中查找元素的第一个和最后一个位置(二分查找)
34.在排序数组中查找元素的第一个和最后一个位置(二分查找) 难度:简单题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-firs原创 2021-03-24 10:31:30 · 109 阅读 · 0 评论 -
69.x的平方根(二分查找)
69.x的平方根(二分查找) 难度:简单题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。考察的是二分查找:二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复杂度为 O(log n)。我的思路:一开始我没绕过来,这题花了很长时间,我都不敢相信这原创 2021-03-23 11:01:50 · 186 阅读 · 0 评论 -
680. 验证回文字符串 Ⅱ(双指针)
680. 验证回文字符串 Ⅱ(双指针) 难度:简单题目描述:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。我的思路:第一次见这个题的时候,真的感觉很难,做出来后,就感觉很简单。①设置两个指针:左指针i=0,右指针j=s.length()-1②while(i<j)循环:i=j时(即s有奇数个),是默认满足的,不用判断。 判断s.charAt(i)==s.charAt(j)是否相等,对所有的都相等时就返回true,有一组 不相等时就调用下面的方法进行判原创 2021-03-15 12:56:13 · 104 阅读 · 2 评论 -
633.平方数之和(双指针)
633.平方数之和(双指针) 难度:简单题目描述:给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a²+ b² = c 。我的思路:一开始我用的是两层for循环,结果超出师姐限制,把范围改到0-sqrt(c)也不行。所以用双指针来解题,简单的多。总结:解题时,我总是习惯于用自己的逻辑思维来解题,而不是优先考虑算法去解题,这就导致我经常用一些很蠢的方法,容易超出时间限制。技能补充:开方代码:Math.sqrt(a)我的Java代码:int l = 0;原创 2021-03-15 11:02:20 · 121 阅读 · 0 评论 -
88.合并两个有序数组(双指针)
88.合并两个有序数组(双指针) 难度:简单题目描述:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-arra原创 2021-03-12 17:08:13 · 295 阅读 · 0 评论 -
167.两数之和(双指针)
167.两数之和(双指针) 难度:简单题目描述:给定一个已按照升序排列的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。来源:力扣(Le原创 2021-03-11 10:51:30 · 270 阅读 · 0 评论 -
【LeetCode】1. 两数之和
【LeetCode】1. 两数之和(难度:简单)题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。解题思路:因为是在数组中找出两个数来,所以是两层循环,然后判断nums[i]+nums[j] == target是否正确,正确则输出数组下标。本题Java代码:class Solution { pub原创 2021-03-02 10:12:18 · 60 阅读 · 0 评论 -
135.分发糖果(贪心算法)
135.分发糖果(贪心算法) 难度:困难题目描述:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?考察的是贪心算法。我的思路:这里的贪心策略是,如果小孩评分不比两边的高,则只给一个糖果。解题分为两步:1.从左向右判断循环一次,得出糖果分配方案2原创 2021-03-10 14:40:57 · 733 阅读 · 0 评论 -
455.分发饼干(贪心算法)
455.分发饼干(贪心算法) 难度:简单题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。来源:力扣(LeetCode)链接:https://leetcode-原创 2021-03-10 10:39:54 · 391 阅读 · 0 评论