LeetCode
Weleness
戒骄戒躁,禁欲禁心
展开
-
leetcode :买股票的最佳时机Ⅱ
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2019-12-23 21:16:53 · 4468 阅读 · 1 评论 -
349. 两个数组的交集
第一种:暴力求解判断交集,然后用set集合去重 public int[] intersection(int[] nums1, int[] nums2) { int[] nums3 = nums1.length > nums2.length ? nums1 : nums2; boolean[] flag = new boolean[nums3.length]...原创 2019-11-21 11:38:30 · 4380 阅读 · 1 评论 -
102.二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-t...原创 2019-11-21 10:59:29 · 4466 阅读 · 1 评论 -
21.合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:创建一个虚拟头,创建一个新的链表指向虚拟头,两个链表进行比较,然后进行插入操作。/** * Definition for singly-linked l...原创 2019-11-17 11:25:26 · 4360 阅读 · 0 评论 -
双关系递推队列---Java实现
思路:首先,1属于集合M,x也属于集合M,那么x肯定是大于或者等于1的,然后,2x+1于3x+1也属于集合M,且要求求集合M的元素从小到大排序的第n个元素。那么,必然有2x>3x或2x<=3x的情况,说明2x与3x不能是在同一个数列,所以可以分成两个数列,一个是2x情况的数列,一个是3x情况的数列。import java.io.BufferedReader;import jav...原创 2019-11-16 16:52:03 · 4747 阅读 · 0 评论 -
接苹果游戏 小学生邀请赛T3
思路:虽然M代表了小船的占列宽,但是小船每次只能移动一格,所以我们首先排除在小船初始位置范围内的苹果,然后再让小船一步一步移动,直到最大范围能够接到苹果,因为小船初始位置在最左侧,所以不用考虑第一个苹果的位置是否在小船的左侧package 接苹果游戏;import java.io.BufferedReader;import java.io.InputStreamReader;i...原创 2019-11-16 16:08:40 · 4623 阅读 · 1 评论 -
螺旋矩阵2
给定一个正整数 n,生成一个包含 1 到 n*n 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]解决思路:先构建一个空的二维数组,规定数据边界tar=n*n;while (num <= tar)保证9能取得到。既然是顺时针的矩阵,那么就规定他填充到边界就转向,填充过的行就...原创 2019-11-14 11:04:50 · 4602 阅读 · 0 评论 -
83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思路:让链表的每一个节点都和下一个节点比较,如果相同,就删除这个节点,然后重新判断是否相同,continue的意思是从新从当前循环开始,舍弃下面的代码。c...原创 2019-11-12 14:33:23 · 4445 阅读 · 0 评论 -
617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。class Solution { /* 前序遍历每一个节点,累加他们的和,只要有一方的节点为空就返回另一个节点 */ ...原创 2019-11-12 11:34:30 · 4419 阅读 · 0 评论 -
对称二叉树
思路:直接分成两部分,左子树和右子树,判断两边再相同位置的时候是否相等就好了。public boolean isSymmetric(TreeNode root) { if(root == null) return true; return isEquals(root.left,root.right); } private boolean is...原创 2019-11-10 14:13:37 · 4348 阅读 · 0 评论 -
验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路:显示程序健壮性判断,即判断传进来的二叉树是否为空,不为空的话判断二叉树是否有左右子节点,有的话,先取左子节点的最远右叶子节点,判断是否大于根节点。然后再取右子节点最远的左子节点基本上...原创 2019-11-10 14:10:43 · 4389 阅读 · 0 评论 -
【leetcode】二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。解题方法:递归法:思路: 如果遍历到的这个节点不为空,就+1,max()里面的结果为2,因为要算上根节点,所以在最后面加上1 private int depth = 0; public int maxDepth(TreeNode root) ...原创 2019-11-09 15:30:47 · 4376 阅读 · 0 评论 -
[leetcode] 反转链表
思路:用遍历法来反转链表。首先,这是一个待反转的链表。其次,我们定义了一个节点cur去指向head,再创建另一个节点为空,用来保存先前结点。。第一次遍历的结果第二次遍历的结果将2指向的下一位引用变成了1 本来2要指向3的,现在让他指向1,相当于一直拿出一个节点,将他添加至头部,之前的节点都指向null。所有的代码class Solution { public Li...原创 2019-11-06 11:44:51 · 4420 阅读 · 1 评论 -
特别数的和
【问题描述】小明对数位中含有2、0、1、9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。请问,在 1 到 n 中,所有这样的数的和是多少?【输入格式】输入一行包含一个整数 n。【输出格式】输出一行,包含一个整数,表示满足条件的数的和。【样例输入】40【样例输出】574【评测用例规模与约定】对于20%的...原创 2019-11-03 11:29:21 · 5584 阅读 · 0 评论 -
最长公共前缀
public String longestCommonPrefix(String[] strs) { if (strs.length == 0) return ""; String prefix = strs[0]; for (int i = 1; i < strs.length; i++) while (strs[i].indexOf(p...原创 2019-11-03 10:34:49 · 4436 阅读 · 0 评论 -
计数质数【数学】
统计某个范围内的素数,最简单的方法就是暴力解法。 int index = 0; for (int i = 2; i < 12; i++) { boolean flag = true; for (int j = 2; j <= (int) Math.sqrt(i); j++) { if (i % j ...原创 2019-10-30 11:35:12 · 4476 阅读 · 1 评论 -
歌手与小朋友照相 【贪心】
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int s = sc.nextInt(); int index = 0; int num = 0; int[][] x = new int[n][2]; for (int i = 0...原创 2019-10-28 11:21:05 · 4484 阅读 · 0 评论 -
给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。
说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。void rotate(int[][] matrix) { if (matrix == null) { return; } int n = matrix.length; for (int i = 0; i &...原创 2019-10-26 11:52:42 · 7875 阅读 · 0 评论 -
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。
//如果最后一位不是9 if (digits[digits.length - 1] != 9) { digits[digits.length - 1] += 1; return digits; } boolean isNine = true; //如果所有位都是9 f...原创 2019-10-26 10:00:04 · 5182 阅读 · 1 评论