随笔分类 - leetcode
摘要:1.题目描述: 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 题目链接:https://leetcode-cn.com/problems/basic-calculator-ii/ 2.解题思路及
阅读全文
摘要:1.题目描述: 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况 链接:https://leetc
阅读全文
摘要:1.题目描述: 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 题目链接:https://leetcode-cn.com/problems/top-k-frequent-elements/ 2.解题思路及代码: 利用哈希表存放数组元素及出现频率,利用一个大小为k的优先队列存放出现频率前K
阅读全文
摘要:1.题目描述: 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。 请注意,它是排序后的第k小元素,而不是第k个元素。 题目链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-ma
阅读全文
摘要:1.题目描述: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 2.解题思路及代码: 方法一: 采用与快速排序相似的方法,选择一个随机的基准值,将基准值划分到正确的位置(比它小的在左,比它大的在右),如果k恰好等于基准值的
阅读全文
摘要:1.题目描述: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。 来源:力扣(LeetCode)链接:http
阅读全文
摘要:1.题目描述: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 2.解题思路及代码: 生成
阅读全文
摘要:1.题目描述: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 2.解题思路及代码: 由于不能得到待删除节点的前驱节点,所以不能用常规操作删除。 此题解法为,将待删除节点的下一节点的值复制到待删除节点,然后删除待删除节点的下一节点 例:要删除“5”节点 (
阅读全文
摘要:1.题目描述: 反转一个单链表。 2.解题思路及代码: 迭代法
阅读全文
摘要:1.题目描述: 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 2.解题思路及代码: 看到O(n log n)时间复杂度,第一时间想到用归并排序或者快排,但是链表交换节点太麻烦,遂选择归并排序 用归并排序排序数组难点在于如何快速找到链表中点,便于后续递归调用。后来看了题解
阅读全文
摘要:1.题目描述 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 2.代码 题目链接:https://www.nowcoder.com/questionTerminal/6ffdd7e4197c403e88c6a8aa3e7a332a
阅读全文
摘要:1.题目描述: 编写一个程序,找到两个单链表相交的起始节点。 2.解题思路及代码 设置双指针,分别指向两个链表头部,向后遍历,到达表尾后指向另一指针的头部,则某一时刻两个指针指向的结点相同,若链表相交,则指向非空结点,若不相交,则同指向NULL. 代码如下: 3.算法分析: 时间复杂度:O(M+N)
阅读全文
摘要:1.题目描述: 给定一个链表,判断链表中是否有环。 2.思路以及代码: 建立一个哈希表,然后遍历链表,每遍历一个结点就将其加入哈希表中,如果当前结点已存在于哈希表中,存在环形。 代码如下: 代码参考:力扣官方题解:https://leetcode-cn.com/problems/linked-lis
阅读全文

浙公网安备 33010602011771号