摘要:
leetcode-897 递增顺序搜索树 DFS+栈实现 1. 题目 给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 2. 思路 使用递归实现二叉树的中序遍历较为简单,先遍历左子树,在输出当前节点 阅读全文
摘要:
leetcode-714 买卖股票的最佳时机含手续费 1. 题目 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买 阅读全文
摘要:
leetcode-525 连续数组 解题思路 解题思路同leetcode-523一致,需要进行预处理,对于一串连续的数组,如果符合条件,其中的0,1数量是一致的,将0变为-1,则数组变为-1和1构成的数组,如果存在一个子数组0、1数量一致,那么新数组-1、1数量一致,则该新子数组求和结果为0,接下来 阅读全文
摘要:
leetcode-692 前K个高频单词 Python优先队列的使用 解题思路 hash+sort 统计每个单词出现的频率,然后对字典进行自定义排序,自定义排序操作 sorted(word_dict.items(),key=functools.cmp_to_key(comp)) hash+prior 阅读全文
摘要:
leetcode-523 连续的子数组和 解题思路 前缀和 超时 复杂度(\(O(n^2)\)) 使用一维矩阵sum_matrix存储前缀和,$summatrix[i]$表示$0-i$元素连续的子数组和,则$summatrix[j]-summatrix[i]$表示$i-j$元素的子数组和,则条件成立 阅读全文
摘要:
Leetcode-496 下一个更大元素 题意: 给定两个数组,数组1为数组2的子集,遍历数组1,求出数组1中每个元素在数组2中该元素右边的第一个比该数大的元素,若不存在,则返回-1. eg: nums1=[4,2,3,1] nums2=[3,4,5,1,2] 遍历数组1,对于元素4,更大的元素为5 阅读全文
摘要:
leetcode-494 目标和 1. 题目 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 2. 解题思路 阅读全文
摘要:
leetcode-453 最小移动次数使数组元素相等 题目: 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 思路: 每次移动元素使得n-1元素加一,实际只需要计算操作元素的次数即可。 假设操作元素的次数为m,则,经过m次操作后, 阅读全文
摘要:
leetcode-421 数组中两个数的最大异或值 前缀树 1. 题目 给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。 2. 思路 暴力解法通过双层for循环求出最大的异或结果,时间复杂度为$O(n^2)$ 超时 前缀 阅读全文
摘要:
leetcode-198 打家劫舍 题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 解题思路 本体使用动态规划思想解答,所以需要列出状态转移方程。因该小偷会 阅读全文