摘要:1. 题目 考察点 这道题的考察点是数组,排序,堆和快速选择算法。 你需要知道如何对数组进行排序,以及不同的排序算法的时间和空间复杂度。 你需要知道如何使用堆来维护一个有序的集合,以及如何利用堆的性质来快速找到第k个最大的元素。 你需要知道如何使用快速选择算法来在平均O(n)的时间内找到第k个最大的
阅读全文
随笔分类 - 算法
摘要:1. 题目 考察点 这道题的考察点是数组,排序,堆和快速选择算法。 你需要知道如何对数组进行排序,以及不同的排序算法的时间和空间复杂度。 你需要知道如何使用堆来维护一个有序的集合,以及如何利用堆的性质来快速找到第k个最大的元素。 你需要知道如何使用快速选择算法来在平均O(n)的时间内找到第k个最大的
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/top-k-frequent-elements/ 考察点 这道题的考察点是: 如何使用哈希表来统计元素的出现频率。 如何使用最小堆来找出前k个高频元素。 如何利用堆的性质来优化时间复杂度。 如何使用合适的数据结构来存储和返回结果。
阅读全文
摘要:1. 题目 2. 解法 3. 总结
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/jump-game/ 考察点 这道题的考察点是数组和动态规划。 数组是一种基本的数据结构,需要掌握如何遍历、访问和修改数组中的元素。 动态规划是一种常用的算法思想,需要掌握如何找到问题的最优子结构、状态转移方程和边界条件。 这道题
阅读全文
摘要:1. 题目 2. 解法 3. 总结
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/rotate-image/ 2. 解法 3. 总结
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/3sum/ 2. 解法 思路是这样的: 首先,对数组进行排序,这样可以方便地跳过重复的元素,也可以利用双指针法来寻找第二个数和第三个数。 然后,遍历数组,固定第一个数,如果第一个数大于零,那么后面的数都大于零,不可能有解,所以可以
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/majority-element/ 169. 多数元素 考察点 数组和哈希表的基本操作, 以及如何在线性时间和常数空间内找到数组中的多数元素。 多数元素是指在数组中出现次数大于⌊n/2⌋的元素 2. 解法 解法一:摩尔投票法 理论
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/implement-rand10-using-rand7/submissions/425373186/ 2. 解法 思路 这道题的要求是用rand7()函数来生成1到10之间的均匀随机数。 一种可能的解法是使用拒绝采样的方法, 即
阅读全文
摘要:1. 动态规划的思想 动态规划的思想是通过把原问题分解成相对简单的子问题的方式来解决复杂问题的方法。 2. 适应场景 动态规划适用于具有最优子结构和重叠子问题的问题。 最优子结构是指问题的最优解可以由子问题的最优解推导得到,重叠子问题是指不同的子问题可能包含相同的更小的子问题。 3. 动态规划的一般
阅读全文
摘要:1.题目 这道题的考察点 是你对Java中位移运算符的理解和应用。 你需要知道左移、右移和无符号右移的区别,以及它们在二进制数上的效果。 你还需要注意负数的表示和处理,以及溢出的可能性。 2.解法 思路 这道题的目标是计算两个整数之间的汉明距离,也就是它们对应二进制位不同的个数。一个简单的方法是使用
阅读全文
摘要:1.题目 https://leetcode.cn/problems/valid-parentheses/ 2.解法 2.1 解法一:利用栈 思路 是使用一个栈来存储左括号,然后遍历字符串中的每个字符, 如果是左括号就入栈, 如果是右括号就出栈并和栈顶元素比较是否匹配。 如果不匹配或者栈为空,就说明字
阅读全文
摘要:1.题目 https://leetcode.cn/problems/add-strings/ 2.解法 思路 使用双指针从后往前遍历两个字符串,同时用一个变量 carry 来记录进位。每次计算两个字符的和,加上 carry ,然后将结果的个位数放入一个 StringBuilder 中,将结果的十位数
阅读全文
摘要:1.题目 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/ leetcode 28 字符串匹配之BF(Brute Force)算法是一种简单的字符串匹配算法,也叫暴力匹配算法。它的思想是将
阅读全文
摘要:1.题目 2.解法 3.总结
阅读全文
摘要:1.题目 https://leetcode.cn/problems/counting-bits/ 2.解法 2.1 解法一:动态规划+ 位运算 其中一种解法是使用位运算,利用i和i&(i-1)的关系来计算1的个数。 具体来说,可以观察到i&(i-1)是将i的最低位的1变成0的结果,所以i和i&(i-
阅读全文
摘要:1.题目 2.解法 3.总结
阅读全文
摘要:1. 常见场景 2 具体详情 2.1 取模 2.1.1 位运算可以处理取模的原理 取模运算(%)是求一个数除以另一个数的余数,比如7 % 3 = 1,表示7除以3余1。取模运算在一些场景中很有用,比如判断一个数是否是奇数或偶数,或者将一个大数映射到一个小范围内。 位运算(&)是按位与运算,即对两个数
阅读全文
|