随笔分类 - 刷题笔记
保持每天刷题,记录笔记。
摘要:题目: 给定一个整数,将其转化为7进制,并以字符串形式输出。 分析: 核心就是十进制转换为七进制,做法就是利用/和%这两个运算符,%为了计算当前进制位应该表示为几(从右向左),/是为了从左向右计算在当前的进制位下是否应该继续向左延申,即如果在截止到当前进制位表达不够输入的十进制数, 那就要向左延申进
阅读全文
摘要:埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。 援引自百度百科 算法思想:要得到自然数n以内的全部素数,必须把不大于的所有素数的倍数剔除,剩下的就是素数。 给出
阅读全文
摘要:题目: 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 第一种分析: 考虑使用桶排序,因为只有红白蓝
阅读全文
摘要:桶排序是对整数进行排序的高效算法,在进行桶排序的时候我们需要先确定key,即key代表得含义,以及key的取值范围,key的取值范围决定了桶的数量。假设键值的范围是从0到t,那么需要t+1个桶,标记分别为0、1、……、t 。如果元素的键值是i,那么就将该元素放入桶i中,每个桶放的都是键值相同的元素。
阅读全文
摘要:1、交易次数限制为一次的情况: 题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票 分析: 由于交易的次数被限制为一次,所以我们要找的就是在这几
阅读全文
摘要:题目:518题给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 分析:对于这种动态规划问题,我们必须弄清楚这几个问题:状态数组的含义、状态转移方程、边界条件以及状态数组索引的选择范围。首先我们来定义一个状态数组,根据题目要求我们知道最终的目标是
阅读全文
摘要:0-1背包问题: n件物品,它们装入背包所占的容量分别为w1、w2……wn;它们所拥有的价值分别为v1、v2 ……vn;有一个总容量为C的背包; 在装满背包的情况下,如何使得包内的总价值最大? 该问题的特点是:每个物品仅有一个,可以选择放或者不放,也就是说每个物品只能使用一次。 思路: 1.首先定义
阅读全文
摘要:题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 分析: 需要注意的是本题要求的的子序列的长度,而只要保证在原数组中的相对顺序不变,可以任意选取数
阅读全文
摘要:题目:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例: 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 说明: 你可以假设 n 不小于 2 且不大于 58。 分析: 1.定义一个状态转
阅读全文
摘要:题目:给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange() sumRange(0, 2) -> 1 sumRange(2, 5) ->
阅读全文
摘要:题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 要求:给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 分
阅读全文
摘要:首先先学习一个经典的算法吧,就是和本题一模一样的“编辑距离算法”。编辑距离,Minimum Edit Distance,简称MED,是俄罗斯科学家 Vladimir Levenshtein 在1965年提出,也因此而得名 Levenshtein Distance。用来度量两个序列相似程度的指标。通俗
阅读全文
摘要:题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 分析:这个题目可以使用递归或者其他的非递归方式解决,但是我这里想作为学习动态规划算法思想的最简单的一个题目来记录自己的学习历程。具体解决思路如下
阅读全文
摘要:题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 题目来源:力扣(LeetCode) 题目分析: 做题之前一定要将题目分析的细致一些,因为有些条件如果
阅读全文
摘要:题目: 括号匹配,就是给定的字符串中,只有"{ 、}、 [、 ] (、)"这几种字符,其中有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 空字符串也是有效字符串。 分析: 这个题目最早接触是在大学本科课程数据结构中接触到的,而它正是栈的一种应用,所以可以借助于栈
阅读全文
摘要:题目描述: 给你一个字符串s,它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从s中删除一个回文子序列。 返回删除给定字符串中所有字符(字符串为空)的最小删除次数。 「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。
阅读全文
摘要:题目描述: 给你一个字符串s ,请你返回满足以下条件且出现次数最大的任意子串的出现次数: 子串中不同字母的数目必须小于等于 maxLetters 。 子串的长度必须大于等于 minSize 且小于等于 maxSize 提示: 1 <= s.length <= 10^5 1 <= maxLetters
阅读全文
摘要:题目描述: 给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。每次「迁移」操作将会引发下述活动: 位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。 位于 grid[i][n - 1] 的元素将会移动到 grid[i + 1][
阅读全文
摘要:题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 解题思路: 最直接的想法就是使用二分查找,如果有序数组中含有与target值相等的元素,直接返回对应的索引值;如果没有则在查找完毕之后,
阅读全文
摘要:题目描述: 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "一个一", 即 11。11 被读作 "两个一", 即 21。21 被读作"一个二" , "一个一", 即 1211 要求:
阅读全文

浙公网安备 33010602011771号