
LeetCode
弈秋之鹤
这个作者很懒,什么都没留下…
展开
-
二叉树非递归遍历
TreeNode定义public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = le原创 2021-05-14 22:22:22 · 140 阅读 · 0 评论 -
判断一个整数中有多少个1的方法
二进制位移法int n;int res = 0;while(n != 0){ if((n & 1) == 1){ res++; } n >>= 1;}去除二进制数中的最右边的一int n ;int res = 0;while(n != 0){ res++; n &= n - 1;}原创 2021-03-23 08:38:17 · 1395 阅读 · 0 评论 -
Leetcode单调栈问题
单调栈的定义单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大42、接雨水解析:对于每一个高度的柱子来说如果想要以它为底盛水,那么它的左右两根柱子都必须比他要高,所以定义一个单调增栈,先保证栈中的元素左边都比右边要大,这时候只要再添加的元素大于栈顶的元素就满足了接水的条件了,这时候就可以计算以栈顶元素高度为底的能接多少水,算出后将其弹出,再次比较栈顶元素是否还能为底来接水,可以的话继续计算,知道无法再节水为止。左边界条件就是栈里必须有一个原创 2021-03-05 21:25:10 · 151 阅读 · 0 评论 -
Leetcode 链表题目
链表是个线性数据结构由零个或多个数据元素组成的有限序列第一个元素无前驱,最后一个元素没有后继,其余元素一个前驱一个后继例题LeetCod 160、 找出两个链表的交点本题中要找出两条链表的交点,首先要知道链表的特性,下一个节点的位置只能由上一个节点来确定,所以不能直接确定某个值得特定的位置,因此本题可以采用两轮循环来确定交点的位置,分别同时从A,B 两个链表的头结点开始遍历,遍历完之后,再从赢一个节点开始遍历这样在第二轮是会在交点处相遇。第一种方法采用双指针的方法。这个方法有几个注意的地方。原创 2020-06-23 14:39:19 · 188 阅读 · 0 评论 -
Leetcode 哈希表题目
Leetcode 1、Two sum给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。解析:本题需要找到两个数相加等于目标值,所以首先想到使用Set集合,而且对于顺序并没有什么要求,因此使用哈希表来实现Set集合,即HashSet…在看发现要返回的是元素的下标,因此还要记录上每个元素的下标,因此需要用到Map集合来完成这个需求。最终本题决定采用HashMap数据结构来完成。class Solution{ public int原创 2020-06-21 09:33:08 · 481 阅读 · 0 评论 -
Leetcode 排序题
349、给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]def intersect(nums1, nums2): # TODO 先将两个数组进行排序 nums1.sort() nums2.sort() print(nums1) print(nums2) ...原创 2020-04-09 14:29:56 · 353 阅读 · 0 评论 -
最大子序和(python)
目录题目暴力求解法题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。暴力求解法暴力算法思路简单,不需要过多的思路。、在本题中要求解最大和子数组,最简单的方法就是将所有的子序列写出来然后进行比较,找出最大的那一组。def maxSubArray(self, nums): max_sum = nums[0] # 取一个变量...原创 2020-03-23 15:54:51 · 440 阅读 · 0 评论