
贪心算法、位运算、Math
贪心算法、位运算、Math
NLP_victor
这个作者很懒,什么都没留下…
展开
-
LeetCode861. 翻转矩阵后的得分(贪心)
1、题目描述https://leetcode-cn.com/problems/score-after-flipping-matrix/有一个二维矩阵A 其中每个元素的值为0或1。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。输入:[[0,0,1,1],[1,0,1,0],[1,1,0,0]]输出:39...原创 2020-12-07 22:12:43 · 280 阅读 · 0 评论 -
LeetCode767. 重构字符串(贪心+Count)
1、题目描述https://leetcode-cn.com/problems/reorganize-string/给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。输入: S = "aab"输出: "aba"输入: S = "aaab"输出: ""S只包含小写字母并且长度在[1, 500]区间内。2、代码详解基于计数的贪心算法贪心的思想,想明白这个就解出来了。 判断解存在很容易,出现次数最多..原创 2020-12-01 11:37:47 · 258 阅读 · 0 评论 -
LeetCode452. 用最少数量的箭引爆气球(排序+贪心、区间问题)
1、题目描述https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons/在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且原创 2020-11-24 16:07:13 · 250 阅读 · 0 评论 -
LeetCode1024. 视频拼接(贪心、DP)
1、题目描述https://leetcode-cn.com/problems/video-stitching/你将会获得一系列视频片段,这些片段来自于一项持续时长为T秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段clips[i]都用区间进行表示:开始于clips[i][0]并于clips[i][1]结束。我们甚至可以对这些片段自由地再剪辑,例如片段[0, 7]可以剪切成[0, 1] +[1, 3] + [3, 7]三部分。我们需要将这些片段进行再剪辑,...原创 2020-10-24 19:48:12 · 521 阅读 · 0 评论 -
LeetCode136. 只出现一次的数字(异或)
1、题目描述https://leetcode-cn.com/problems/single-number/给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 42、代码详解解法1:使用快排,复杂度O(nlogn)解法2:利用 Hash 表,Time:O(n) Space:...原创 2020-09-14 22:41:47 · 307 阅读 · 0 评论 -
数学-LeetCode415. 字符串相加
1、题目描述https://leetcode-cn.com/problems/add-strings/给定两个字符串形式的非负整数num1 和num2,计算它们的和。注意:num1 和num2的长度都小于 5100. num1 和num2 都只包含数字0-9. num1 和num2 都不包含任何前导零。 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。2、代码详解数学:模拟人工加法class Solution(object)...原创 2020-08-03 17:14:20 · 172 阅读 · 0 评论 -
贪心-LeetCode410. 分割数组的最大值
1、题目描述https://leetcode-cn.com/problems/split-array-largest-sum/给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。 注意: 数组长度 n 满足以下条件: 1 ≤ n ≤ 1000 1 ≤ m ≤ min(50, n)输入: nums = [7,2,5,10,8] m = 2 输出: 18 解释: 一共有四种方法将nums分割为2个子数组。..原创 2020-07-25 17:06:56 · 368 阅读 · 0 评论 -
贪心-LeetCode135. 分发糖果
1、题目描述https://leetcode-cn.com/problems/candy/老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。按照以下要求,帮助老师给这些孩子分发糖果,老师至少需要准备多少颗糖果呢?每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。输入: [1,2,2]输出: 4解释: 你可以分别给.原创 2020-07-21 19:23:38 · 237 阅读 · 0 评论 -
Math-LeetCode7. 整数反转
1、题目描述https://leetcode-cn.com/problems/reverse-integer/给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意: 假设环境只能存储得下 32 位的有符号整数,则其数值范围为[−2^31,2^31− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。输入: 123输出: 321输入: -123输出: -321输入: 120输出: 212、代码详解对当前数取对10的余数,再一项项...原创 2020-07-20 12:46:13 · 185 阅读 · 0 评论 -
Math-面试题 16.11. 跳水板
1、题目描述https://leetcode-cn.com/problems/diving-board-lcci/你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。输入: shorter = 1 longer = 2 k = 3输出: {3,4,5,6}2、代码详解需要O(n)的时间复杂度数学方法cl...原创 2020-07-08 11:19:26 · 197 阅读 · 0 评论 -
DP-279. 完全平方数
1、题目描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.输入: n = 13输出: 2解释: 13 = 4 + 9.2、代码详解时间复杂度:O(n*sqrt(n)),sqrt为平方根class Solution(object): def numSquares(self, n): """原创 2020-06-28 11:28:10 · 230 阅读 · 0 评论 -
位运算-LeetCode191. 位1的个数(剑指15:二进制中1的个数)
0、剑指15题(不同点:输入的是十进制数!)15:二进制中1的个数(剑指offer第2版Python)参考https://blog.csdn.net/u010005281/article/details/79851154https://www.zhihu.com/question/314455297?sort=created1、题目描述(输入的是二进制串,但是代码完全与剑指输入十进制数的一样即可,不然反而力扣无法通过,迷)编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位原创 2020-06-19 22:27:28 · 270 阅读 · 0 评论 -
贪心-LeetCode605. 种花问题
1、题目描述假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回False。数组内已种好的花不会违反种植规则。 输入的数组长度范围为 [1, 20000]。 n是非负整数,且不会超过输入数组的大小。2、代码详解(贪心)我们从左到右扫描数组 flo...原创 2020-06-12 21:43:07 · 381 阅读 · 0 评论 -
DP、贪心-LeetCode55. 跳跃游戏
1、题目描述给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。2、代码详解法一:巧妙,greedy如果一个位置能够到达,那么这个位置左侧所有位置都能到达。(因为跳的长度可以任意,只要小于最大长度)解题思路:如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。 可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。.原创 2020-05-25 16:58:25 · 380 阅读 · 0 评论 -
二分、快速幂-16:数值的整数次方(剑指offer第2版)50. Pow(x, n)
1、题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。2、代码详解先说结论:特例:底数为0且指数为负,抛异常“0不能求倒数” equal_zero时,因为计算机内表示小数有误差,要写成abs(num - 0.0) < 0.0000001 1.0/base,不能写成1/base 位运算优化效率“整除以2...原创 2020-03-08 19:24:52 · 227 阅读 · 1 评论 -
二分-LeetCode69. x 的平方根
1、题目描述实现int sqrt(int x)函数。计算并返回x的平方根,其中x是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。2、代码详解思路:binary...原创 2019-03-17 21:46:22 · 217 阅读 · 0 评论