自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

转载 TIJ——第11章:持有对象-PriorituQueue

详解

2020-07-16 17:45:53 137

原创 TIJ——第11章:Collection和Iterator

Collection和AbstractCollectionAbstractCollection实现了Collection接口,是一个抽象类,有两个抽象方法:1:public abstract Iterator iterator();2:public abstract int size();Collection接口的其他方法,都有默认的实现;其中:1:isEmpty()方法调用size()来判断2:contains()、containsAll()、toArray()方法是通过循环iterator(

2020-07-16 17:45:13 162

原创 剑指offer 栈的压入、弹出序列

题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)题解:例1压栈:1 2 3 4 5出栈:4 5 3 2 1就是看出栈顺序,...

2019-12-18 03:58:02 93

原创 剑指offer 二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。题解:①如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点。②一个节点没有右子树:①如果节点是父节点的左子节点,它的下一个节点是他的父节点②如果节点是父节点的右子节点,沿着指向父节点的指针一直往上遍历,直到找到一个是它父节点的左...

2019-12-15 05:46:33 78

原创 剑指offer 数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题解:就是说先把所有数据异或,然后得到的结果是两个唯一出现过一次的数的异或结果,找出他们异或结果中第一个为1的位置,比如这个位置记作k,然后把第k位为1的所有数据分在一组,为0的分在另一组,这样同样的数据肯定被分为了两组,并且两个只出现唯一一次的数据都分在了两组。//num1,num2...

2019-12-12 18:15:57 70

原创 Java并发指南6:AQS中的公平锁与非公平锁,Condtion

公平锁和非公平锁只有两处不同非公平锁在调用 lock 后,首先就会调用 CAS 进行一次抢锁,如果这个时候恰巧锁没有被占用,那么直接就获取到锁返回了。非公平锁在 CAS 失败后,和公平锁一样都会进入到 tryAcquire 方法,在 tryAcquire 方法中,如果发现锁这个时候被释放了(state == 0),非公平锁会直接 CAS 抢锁,但是公平锁会判断等待队列是否有线程处于等待状态,...

2019-09-10 21:42:37 657

原创 Java并发指南2:ThreadLocal

ThreadLocal是线程变量,在多线程环境下,可以保证各个线程之间的变量互相隔离、相互独立。ThreadLocal常用方法介绍:ThreadLocal提供了set和get访问器用来访问与当前线程相关联的线程局部变量。每个线程中都有一个ThreadLocalMap数据结构,在线程中,可以通过ThreadLocal的get()/set()方法来访问变量。(ThreadLocal只有一个,...

2019-09-03 18:03:27 128

原创 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化(explain)

磁盘IO与预读磁盘读取数据靠的是机械运动每次读取数据花费的时间可以分为①寻道时间:磁臂移动到指定磁道所需要的时间②旋转延迟:旋转延迟就是我们经常听说的磁盘转速③传输时间:传输时间指的是从磁盘读出或将数据写入磁盘的时间考虑到磁盘IO是非常高昂的操作,计算机操作系统做了一些优化,当一次IO时,不光把当前磁盘地址的数据,而是把相邻的数据也都读取到内存缓冲区内,因为局部预读性原理告诉我们,当计...

2019-08-26 19:13:16 109

原创 剑指offer 数组中重复的数字(HashMap)

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。HashMap做法:import java.util.*;public class Solution { //...

2019-08-08 13:29:55 232

原创 剑指offer 数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。题解思路:数组是排序的,并且是查找,应该想到二分查找。但是并不是找那个数出现的范围,因为如果整个数组都是同一个数的话复杂度就是O(n)...

2019-08-06 13:35:18 68

原创 leetcode remove-nth-node-from-end-of-list输出链表的倒数第n个结点

这道题让我们移除链表倒数第N个节点,限定n一定是有效的,即n不会大于链表中的元素总数。还有题目要求我们一次遍历解决问题,那么就得想些比较巧妙的方法了。比如我们首先要考虑的时,如何找到倒数第N个节点,由于只允许一次遍历,所以我们不能用一次完整的遍历来统计链表中元素的个数,而是遍历到对应位置就应该移除了。那么我们需要用两个指针来帮助我们解题,pre和cur指针。首先cur指针先向前走N步,如果此时c...

2019-04-26 17:51:56 116

原创 leetcode valid-parentheses栈

题意:给定一个仅包含字符’(’、’)’、’’、’’、’[‘和’]'的字符串,确定输入字符串是否有效。括号必须以正确的顺序关闭,“()”和“()[]”均有效,但“(]”和“([)]”无效。题解:[ ( { [ ] ( ) } ) ] ( )这样是正确的可以左括号进栈,右括号出栈,出栈时看看跟右括号符不符合,还有字符是右括号但是栈已经为空的情况,以及字符串遍历完后栈中还有剩余的情况也是fa...

2019-04-26 16:38:55 271

原创 leetcode next-permutation数组排列

实现下一个排列,它将数字重新排列到词典中的下一个更大的数字排列中。如果这种排列不可能,则必须将其重新排列为尽可能低的顺序(即按升序排序)。替换必须到位,不要分配额外的内存。下面是一些例子。输入在左列,相应的输出在右列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1比如第一组的排列从小到大的顺序是1 2 31 3 22 1 32 3 13 1 23 2 ...

2019-04-23 21:15:56 165

原创 leetcode construct-binary-tree-from-preorder-and-inorder-traversal给树的先序跟中序,求树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; * ...

2019-04-23 18:31:16 123

原创 leetcode binary-tree-level-order-traversal-ii倒序输出树的每一层

For example:Given binary tree{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its bottom-up level order traversal as:[ [15,7] [9,20], [3],]解法一:每次将list保存到结果list的0下标的位置/**...

2019-04-23 00:16:24 97

原创 leetcoe plus-one数组加一进位

给你一个数组,表示一个多位数,现在需要加1,输出加1后的数组比如 1999输出 2000public class Solution { public int[] plusOne(int[] digits) { int len = digits.length; for(int i=len-1;i>=0;i--){ if(((...

2019-04-21 02:23:00 190

原创 leetcode symmetric-tree判断两颗树是否对称

对于二叉树,检查它是否是自身的镜像(即,围绕其中心对称)。例如,此二叉树是对称的: 1 / \ 2 2 / \ / \3 4 4 3这个不对称 1 / \ 2 2 \ \ 3 3BFS/** * Definition for binary tree * public class TreeNode { * ...

2019-04-15 00:18:43 155

原创 leetcode permutations数字dfs

给定一组数字,返回所有可能的排列。例如,[1,2,3]有以下排列:[1,2,3]、[1,3,2]、[2,1,3]、[2,3,1]、[3,1,2]和[3,2,1]。用dfs,多熟悉ArrayList的用法import java.util.*;public class Solution { ArrayList<ArrayList<Integer>> res;...

2019-04-14 22:12:43 110

原创 leetcode remove-duplicates-from-sorted-list有序链表去重

For example,Given1->1->2, return1->2.Given1->1->2->3->3, return1->2->3./** * Definition for singly-linked list. * public class ListNode { * int val; * ListNod...

2019-04-14 18:28:59 223

原创 leetcode count-and-say字符串

这道题算就是字符串处理的问题,序列中第一个字符串是“1”,接下来依次统计前一个字符串中连续相同字符的数量,并添加到下一字符串中。前15字符串如下(LeetCode上貌似只有18测试用例):11121121111122131221113112221111321321131131211131221132113111231131122111113122113311213211321...

2019-04-14 16:14:17 95

原创 leetcode swap-nodes-in-pairs交换两两结点

题意:给定一个链表,交换每两个相邻节点并返回其头部。例如,在1->2->3->4中,您应该返回列表as2->1->4->3。您的算法应该只使用常量空间。不能修改列表中的值,只能更改节点本身。如果是基数,最后一个节点不需要交换/** * Definition for singly-linked list. * public class ListN...

2019-04-12 21:05:19 112

原创 leetcode binary-tree-level-order-traversal输出树的每一层

题意:给定二叉树,返回其节点值的级别顺序遍历。For example:Given binary tree{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]]/** * Definition...

2019-04-12 19:18:47 130

原创 leetcode spiral-matrix-ii 数组顺时针填值

题意:给定一个整数n,生成一个以螺旋顺序填充从1到n 2元素的正方形矩阵。例如,n=3,您应该返回以下矩阵:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]这个代码中,当n为基数时,最后col会比scol小一位,最中间那点手动加上public class Solution { public int[][] generateMatrix...

2019-04-12 18:55:26 146

原创 leetcode jump-game贪心+dp

题意:给定一个非负整数数组,您首先被定位在数组的第一个索引处。数组中的每个元素表示该位置的最大跳跃长度。确定是否能够到达最后一个索引。例如:A=[2,3,1,1,4],返回真。A=[3,2,1,0,4],返回假。解题:定义一个能跳跃达到的最大长度maxlen = A[0]+1然后遍历A数组如果最大长度不能跳到当前点i+1,返回false如果最大长度能达到终点len,返回tru...

2019-04-12 16:09:15 135

原创 leetcode remove-duplicates-from-sorted-array 数组去重

题目:给定一个已排序的数组,将重复项移除到位,这样每个元素只出现一次,并返回新的长度。不要为另一个数组分配额外的空间,必须在内存恒定的情况下就地分配。例如,给定输入数组a=[1,1,2],您的函数应该返回length=2,而a现在是[1,2]。public class Solution { public int removeDuplicates(int[] A) { ...

2019-04-11 21:02:52 169

原创 leetcode generate-parentheses括号回溯

给定n对括号,编写一个函数来生成格式良好的括号的所有组合。例如,给定n=3,解集为:For example, given n = 3, a solution set is:“((()))”, “(()())”, “(())()”, “()(())”, “()()()”关键:每次左括号比右括号多时可以加左括号或者右括号 x>y && x<n如果左括号等于右括号...

2019-04-05 04:40:35 113

原创 leetcode merge-two-sorted-lists 合并两个有序链表

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public...

2019-04-05 03:03:42 111

原创 leetcode binary-tree-inorder-traversal输出树的中序遍历

左根右递归版本:/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.*;pub...

2019-04-04 21:11:02 128

原创 leetcode search-a-2d-matrix在矩阵中查找一个数

有一个n*m的矩阵,满足以下特点:每行从小到大排序,每行的第一个数比上一行的最后一个数大。给你一个数,查找这个数是否在矩阵中。矩阵拉直就是一个有序排序的数组,直接二分查找。public class Solution { public boolean searchMatrix(int[][] matrix, int target) { int n = matrix.le...

2019-04-04 17:35:39 336

原创 leetcode rotate-image矩阵数组顺时针90度旋转

找规律public class Solution { public void rotate(int[][] matrix) { int n = matrix.length; int res[][]=new int[n+1][n+1]; for(int i=0;i<n;i++){ for(int j=0;j&...

2019-04-04 17:06:02 237

原创 leetcode search-insert-position查找

给定排序数组和目标值,如果找到目标,则返回索引。如果没有,则返回按顺序插入索引的位置。您可以假定数组中没有重复项。这里有几个例子。[1,3,5,6], 5 → 2[1,3,5,6], 2 → 1[1,3,5,6], 7 → 4[1,3,5,6], 0 → 0...

2019-04-04 16:06:04 111

原创 leetcode unique-paths动态规划

机器人位于M x N网格的左上角(下图中标记为“开始”)。机器人只能在任何时间点向下或向右移动。机器人正试图到达网格的右下角(在下图中标记为“完成”)。有多少可能的唯一路径?很简单的动态规划,dp[i][j]表示走到(i,j)有多少条路径public class Solution { public int uniquePaths(int m, int n) { i...

2019-04-03 02:53:25 141

原创 leetcode best-time-to-buy-and-sell-stock 求最大连续和变型

假设你有一个数组,里面存放的第i个元素表示第i天的股票的价格,如果你最多只允许进行一次交易(买进和卖出股票视为一次交易)请设计一个算法得到最大利润。解题思路:在满足i<j的情况下,找出一个最低值prices[i]跟最高值prices[j]跟求最大连续和一样public class Solution { public int maxProfit(int[] prices) {...

2019-04-03 01:54:04 91

原创 leetcode same-tree 判断两棵树是否相等

两棵树结构以及val相等则为相同的tree有递归跟非递归两种写法判断一下两棵树的是否同时有左右节点,当前节点val是否相同即可递归写法/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...

2019-04-02 04:53:45 215

原创 leetcode populating-next-right-pointers-in-each-node 链表中同一层的结点连接起来

简单点就是,给定完全二叉树,将它每一层的顶点串起来Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }For exampleGiven the following perfect bi...

2019-04-02 03:47:37 113

原创 leetcode container-with-most-water

给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色...

2019-04-01 21:23:14 184

原创 leetcode best-time-to-buy-and-sell-stock-ii 贪心

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = ...

2019-04-01 16:23:37 81

原创 leetcode maximum-depth-of-binary-tree 求树的深度

递归写法/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.*;public c...

2019-04-01 06:17:41 111

原创 Leetcode linked-list-cycle 判断链表是否有环

使用快慢指针看是否相遇/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */p...

2019-03-27 20:50:49 208

原创 leetcode insertion-sort-list 使用插入排序对链表排序

使用插入排序对链表排序。插入排序就是不断的向一个已经排序的列表中(此处为代码中的sortedList)添加新的节点,并且保证添加节点后的列表仍然有序。这里用把排好序的头节点为head,未排序的为last每次排序让h=headhl = head的前一个节点让last与h对比大小/** * Definition for singly-linked list. * public clas...

2019-03-27 20:48:30 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除