自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dev_zyx的博客

talk is cheap, show me code!

  • 博客(22)
  • 收藏
  • 关注

转载 图解Java 垃圾回收机制

摘要:   Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题:给对象分配内存 以及 回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的 堆区。关于对象分配内存问题,笔者的博文《JVM 内存模型概述》已经阐述了 如何划分可用空间及其涉及到的线程安全问题,本文将结合垃圾回收策略进一步给出内存分配规则。垃圾回收机制的引入可以有效的...

2020-05-30 12:26:46 61

原创 面试题38. 字符串的排列

题目: 面试题38. 字符串的排列 题解: 代码: import java.util.*; public class 面试题38 { public static String[] permutation(String s) { Set<String> set = new TreeSet<>(); // 所有排列的可能都在这里 if(s != null || s.length() > 0) {

2020-05-28 22:39:11 175

原创 面试题35. 复杂链表的复制

题目: 面试题35. 复杂链表的复制 138. 复制带随机指针的链表 题解: 1. 题解一:HashMap 第一遍遍历复制节点的 val ,next 和 random 暂时为空,并将源节点和克隆节点形成映射存放在一个 HashMap 中。 第二遍遍历,将拷贝的新的节点组织成一个链表。 2. 题解二: 代码: 1. 代码一:HashMap // 方法1: public static Node copyRandomList(Node head) { if(head == null) {

2020-05-27 20:15:25 151

原创 面试题33. 二叉搜索树的后序遍历序列

题目: 面试题33. 二叉搜索树的后序遍历序列 题解: 代码: public class 面试题33 { public static boolean verifyPostorder(int[] postorder) { if(build(postorder, 0, postorder.length - 1)) { return true; } return false; } publ

2020-05-26 18:54:36 132

原创 142. 环形链表 II

题目: 142. 环形链表 II 链表中环的入口结点 [编程题]链表中环的入口结点 题解: 1. 题解一:利用set求解 遍历链表的时候,用一个容器set依次装入链表的节点,如果发现有重复的节点,那么该节点就是链表的环的入口节点。 2. 题解二:双指针(快慢指针) 解释一: 解释二: 解释三: 解释四: 采用双指针的方法(这个方法还可以用来判断链表中有没有环),一个快指针一个慢指针,快指针一次走两步,慢指针一次走一步, 如果链表中有环,那么两个指针一定就可以相遇,并且相遇的地方,一定在环的

2020-05-26 13:07:55 74

原创 141. 环形链表

题目: 141. 环形链表 题解: 1. 题解一:利用set求解 2. 题解二:双指针(快慢指针) 代码: 1. 代码一:利用set求解 // 方法1: public static boolean hasCycle(ListNode head) { Set<ListNode> set = new HashSet<>(); // 哈希表去重 boolean flag = false; while(head != null) {

2020-05-26 12:37:34 86

原创 面试题32 - I. 从上到下打印二叉树

题目: 面试题32 - I. 从上到下打印二叉树 题解: 代码: import java.util.*; public class 面试题32 { public static int[] levelOrder(TreeNode root) { if(root == null) { int temp[] = new int[0]; return temp; } Queue&lt

2020-05-22 16:40:33 88

原创 4.20日阿里笔试

题目:勇士打怪兽 题解: 总体思路: 从小到大排序,遇到能打过的+1,遇到打不过的升级,记录金币的最大值。 具体思路: 1. 先对所有怪兽的能力值数组进行排序,从弱的开始打; 2. 遍历排序后的所有怪兽,如果能力值够打,就打完拿 1 金币; 3. 如果当前金币+能力值够打,就打完拿 1 金币(金币和能力值进行更新); 4. 用一个值记录最大金币,每次用金币补贴之前先更新最大值; 5. 打印最大金币数; 代码: import java.util.*; public class Main_1 {

2020-05-22 13:45:43 175

原创 面试题31. 栈的压入、弹出序列

题目: 面试题31. 栈的压入、弹出序列 946. 验证栈序列 题解: 代码: import java.util.*; public class 面试题31 { public static boolean validateStackSequences(int[] pushed, int[] popped) { Stack<Integer> stack = new Stack<>(); int k = 0;

2020-05-21 21:19:53 75

原创 面试题30. 包含min函数的栈

题目: 面试题30. 包含min函数的栈 155. 最小栈 题解: 代码: import java.util.*; public class 面试题30 { public static class MinStack { /** initialize your data structure here. */ Stack<Integer> stack; Stack<Integer> min_stac

2020-05-20 23:32:01 145

原创 面试题27. 二叉树的镜像

题目: 面试题27. 二叉树的镜像 226. 翻转二叉树 题解: 代码: public class 面试题27 { public static TreeNode mirrorTree(TreeNode root) { if(root == null) { return null; } TreeNode temp = root.left; root.left = mirrorTree(r

2020-05-19 20:20:46 88

原创 面试题26. 树的子结构

题目: 面试题26. 树的子结构 题解: 代码: public class 面试题26 { public static boolean isSubStructure(TreeNode A, TreeNode B) { if(A == null || B == null) { return false; } if(dfs(A, B) || isSubStructure(A.left, B) || is

2020-05-19 17:35:33 83

原创 序列和

题目: [编程题]序列和 序列和 题解: 代码: import java.util.*; public class 序列和 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { int N = sc.nextInt(); int L = sc.

2020-05-19 13:07:58 124

原创 Java 集合框架

参考: 由浅入深理解java集合(一)——集合框架 Collection、Map Java 集合框架 数据结构与算法——常用数据结构及其Java实现 java 中几种常用数据结构 Java - 集合框架完全解析 Java集合框架常见面试题.md 详解Java集合框架,让你全面掌握! Java集合框架完全解析 JAVA集合框架总结 java.util.Collection [I] +--java.util.List [I] +--java.util.ArrayList [C]

2020-05-18 22:10:58 111

原创 面试题22. 链表中倒数第k个节点

题目: 面试题22. 链表中倒数第k个节点 题解: 1. 题解一:统计一遍链表长度再遍历n-k个结点 2. 题解二:快慢指针(双指针) 代码: 1. 代码一:统计一遍链表长度再遍历n-k个结点 public class 面试题22 { private static ListNode createLinkedList(int[] arr) {// 将输入的数组输入到链表中 if (arr.length == 0) { return null;

2020-05-18 12:34:22 80

原创 面试题21. 调整数组顺序使奇数位于偶数前面

题目: 面试题21. 调整数组顺序使奇数位于偶数前面 题解: 代码: public class 面试题21 { public static int[] exchange(int[] nums) { int left = 0; int right = nums.length - 1; while(left < right) { while(left < right && nu

2020-05-17 13:22:42 67

原创 面试题18. 删除链表的节点

题目: 面试题18. 删除链表的节点 题解: 注意: 代码: public class 面试题18 { public static ListNode deleteNode(ListNode head, int val) { ListNode dummy = new ListNode(-1); dummy.next = head; ListNode pre = dummy; ListNode cur = head;

2020-05-16 23:39:02 64

原创 面试题17. 打印从1到最大的n位数

题目: 面试题17. 打印从1到最大的n位数 题解: 1. 题解一:暴力求解 使用Math.pow()方法。 2. 题解二:快速幂 快速幂方法,手工实现一次快速幂,替换Math.pow()方法。 代码: 1. 代码一:暴力求解 // 方法1:暴力求解 public static int[] printNumbers(int n) { int len = (int)Math.pow(10, n); int nums[] = new int[len - 1]; for(int i =

2020-05-15 11:35:26 451

原创 面试题15. 二进制中1的个数

题目: 面试题15. 二进制中1的个数 191. 位1的个数 题解: 1. 题解一: 使用Java自带的方法,Integer.bitCount()。 2. 题解二: 使用Integer包里的toBinaryString函数,将输入的int值转化成二进制形式并返回这个二进制数的字符串,再进行计数操作。 3. 题解三: // 思路:位运算 // 无符号右移操作 // Java 中无符号右移为 ">>>" // >>:带符号右移。正数右移高位补0,负数右移高位补1 4

2020-05-13 12:46:20 186

原创 面试题14- II. 剪绳子 II

题目: 面试题14- II. 剪绳子 II 题解: 代码: import java.util.*; public class 面试题14_2 { public static int cuttingRope(int n) { if(n <= 3) { return n - 1; } int mod = 1000000007; long res = 1; while(n &

2020-05-12 17:12:29 95

原创 面试题14- I. 剪绳子

题目: 面试题14- I. 剪绳子 题解: 1. 题解一:(数学推导 / 贪心思想) 代码: 1. 代码一(数学推导 / 贪心思想) import java.util.*; public class 面试题14_1 { public static int cuttingRope(int n) { if(n <= 3) { return n - 1; } int a = n / 3;

2020-05-12 12:44:54 110

原创 406. 根据身高重建队列

题目: 406. 根据身高重建队列 题解: /** * 解题思路:先排序再插入 * 1.排序规则:先按照高度 H 降序排序,再按照 K 个数升序排序(if the heights are equal, compare k-values) * 2.遍历排序后的数组,根据 K 插入到 K 的位置上 * * 核心思想:高个子先站好位,矮个子插入到 K 位置上,前面肯定有 K 个高个子,矮...

2020-05-05 21:16:43 118

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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