- 博客(79)
- 收藏
- 关注
原创 Java并发编程的艺术 第三章
Java内存模型3.1 Java内存模型的基础3.1.1 并发编程模型的两个关键问题在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里线程之间没有公共状态,线程之...
2018-12-05 14:38:59
231
原创 LeetCode之电话号码的组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].解题方案:
2018-11-27 17:43:23
544
原创 LeetCode之最接近的三数之和
题目描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).public int ...
2018-11-26 14:57:43
148
原创 LeetCode 之 三数之和
问题描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4]满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解决方案...
2018-11-23 16:00:43
156
原创 LeetCode之整数转罗马数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...
2018-11-21 16:54:48
110
原创 LeetCode之 正则表达式匹配(困难)
给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p...
2018-11-20 15:09:04
201
原创 LeetCode 之盛水最多的容器
问题描述:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容...
2018-11-20 15:05:07
272
原创 LeetCode之“Z字形变换” (中等 模拟 找规律)
题目描述:将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = "PAY...
2018-11-12 17:03:20
164
翻译 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"这道题 是真有难度啊 我差一点就独立解决了 可惜还是差一点 继续加油 解题方案:(暴力方法不讲,遍历所有子串)①反转S并成为S'。...
2018-11-12 15:36:09
139
原创 LeetCode之最长不重复子串的长度(中等 字符串)
问题描述:给定一个字符串,找出不含有重复字符的最长子串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 无重复字符的最长子串是 "wke.
2018-11-12 14:25:31
579
原创 LeetCode之有序数组的中位数(困难数组)
问题描述:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]...
2018-11-08 17:11:58
112
翻译 LeetCode之两数相加(中等 链表)
问题描述:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路:我们使用...
2018-11-05 16:25:07
116
原创 Java程序的初始化顺序是怎样的
Java程序的初始化一般遵循3个原则:①静态对象(变量)优先于非静态对象(变量)初始化,其中。静态对象(变量)只初始化一次,而飞静态对象(变量)可能会初始化多次。②父类优先于子类初始化。③按照成员变量的定义顺序进行初始化。备注:即使变量定义散布于方法定义之中,他们依然在任何方法(包括构造函数)被调用之前被初始化。 Java程序初始化工作可以在不同的代码块中来完成。他们的执行...
2018-11-05 11:35:04
138
原创 如何实现在main方法前执行前输出“Hello World”
由于静态块在类被加载时就会被调用,因此可以在main()方法执行前利用静态块输出。public class Solution { static { System.out.println("Hello World"); } public static void main(String[] args) { }} ...
2018-11-02 16:02:42
404
原创 为什么需要public static void main(String[] args)这个方法
public static void main(String[] args)为Java程序的入口方法,JVM在运行程序会先查找main()方法,public表明任何类可以访问,static表明方法代码存储在静态存储区,直接通过类名.main可以访问,JVM启动时就是按照上述方法的签名来寻找(必须是public static ,而且返回值为void,参数是字符串数组,main是JVM识别的特殊方法名...
2018-11-02 15:57:50
1339
原创 LeetCode之只出现一次的数字
问题描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4直接弄 异或public int singleNumber(int[] num...
2018-11-02 11:45:35
128
原创 LeetCode之验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false自己的low货代码 public boolean isPalindrome...
2018-11-02 10:59:36
126
原创 Java与C/C++有什么异同
1、Java为解释性语言,运行过程为由编译器将Java代码转换为字节码,然后由虚拟机解释执行。 C/C++为编译型语言,源代码经过编译和链接生成可执行的二进制代码。因此,Java的执行速度比C/C++慢,但是Java能跨平台,C/C++不行。2、Java为纯面向对象语言,所有代码必须在类中实现,C/C++兼具面向对象和面向过程的特点,可以定义全局变量和函数。3、与C/C++语言...
2018-11-01 17:45:46
929
原创 Java语言有哪些优点
1、Java为纯面向对象的语言。2、Java语言具有平台无关性。Java为解释性语言,编译器会把Java代码变成“中间字节码”,然后在Java虚拟机上解释执行,由于中间代码与平台无关,Java语言有很好的跨平台特性,有很好的移植性。3、Java提供很多内置类库,通过这些类库简化开发人员的程序设计工作。Java提供对多线程的支持,提供对网络通信的支持,提供垃圾回收器,使得开发人员从对内存的管...
2018-11-01 17:14:21
4676
原创 LeetCode之买卖股票的最佳时机二(简单 数组)
问题描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时...
2018-11-01 15:43:17
133
原创 LeetCode之买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...
2018-11-01 14:54:41
92
原创 LeetCode之杨辉三角二(简单模拟)
问题描述:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?直接大神代码,今天下午脑袋宕机。例如这是rowIndex = 6 时的情况1st: 1=12nd: 6= 6 / 13rd: 15=...
2018-10-31 15:26:39
136
原创 LeetCode之杨辉三角(简单 模拟)
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]老规矩 先来自己的public List<List<Integer>> gen...
2018-10-31 14:33:50
235
原创 LeetCode 之 路径总和(简单 二叉树)
问题描述:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13...
2018-10-31 11:57:42
304
原创 LeetCode之二叉树最小深度(简单 二叉树)
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.一层一层遍历,每遍历一层,高度+1,知道遇到叶节点,返回高度。publ...
2018-10-31 10:53:48
148
原创 LeetCode之判断平衡二叉树
问题描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,nu...
2018-10-30 15:19:30
320
原创 LeetCode之转换有序数组到二叉搜索树
问题描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...
2018-10-30 12:19:40
105
原创 LeetCode之二叉树层次遍历逆序输出(简单 二叉树)
问题描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]说是简单题,我可没觉...
2018-10-29 16:09:41
3407
原创 LeetCode之二叉树最大深度(简单 二叉树)
问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。二叉树的问题解决大概基本两个方向,递归,和队列或者栈实现非递归。...
2018-10-29 10:56:36
100
原创 LeetCode之镜像二叉树(简单 二叉树)
问题描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和...
2018-10-29 10:07:23
591
原创 LeetCode 之相同的树
问题描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...
2018-10-29 09:18:08
141
原创 LeetCode之二叉树判断是否相同(简单 二叉树)
问题描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...
2018-10-26 16:58:51
283
原创 LeetCode 之合并两个有序数组
问题描述:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3...
2018-10-26 15:31:54
81
原创 LeetCode 之 删除链表重复的元素(简单 链表)
问题描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3简单的一批,直接代码默认节点类/** * Definition for singly-linked list. *...
2018-10-26 10:08:54
126
原创 LeetCode之爬楼梯
问题描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1...
2018-10-26 09:47:41
121
原创 LeetCode之添加二进制
给定两个二进制字符串,返回它们的总和(也是二进制字符串)。输入字符串都是非空的,只包含字符1或 0。例1:输入: a =“11”,b =“1” 输出: “100”例2:输入: a =“1010”,b =“1011” 输出: “10101”大神代码 清晰明了 不解释public String addBinary(String a, String b) { ...
2018-10-25 10:55:09
94
原创 LeetCode之加1(简单 数组)
问题描述:给定表示非负整数的非空数字数组,加上整数的1。存储数字使得最高有效数字位于列表的开头,并且数组中的每个元素包含单个数字。您可以假设整数不包含任何前导零,除了数字0本身。例1:输入: [1,2,3] 输出: [1,2,4] 说明:数组表示整数123。例2:输入: [4,3,2,1] 输出: [4,3,2,2] 说明:数组表示整数4321。上来一...
2018-10-25 09:25:27
256
原创 LeetCode之最后一个单词长度(简单 字符串)
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5上来一看题,简单的不得了,提手就写,那结果错的几率就大很多。考虑到字符串组合的复杂性又多少种情况呢。1)直接传一个“ ”(空格)2)直接传一个...
2018-10-24 16:31:22
109
原创 LeetCode之最大连续子数组之和(简单 数组 动态规划)
问题描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。考虑最大和跟子数组最后一个元素arr[n-1]...
2018-10-24 15:59:43
814
原创 LeetCode之报数(简单 模拟 递归)
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个
2018-10-23 11:05:23
2093
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人