- 博客(37)
- 收藏
- 关注
原创 HashMap和HashTable的区别
参考链接:http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable 总结:1. hashmap不是线程安全的 2. hashtable是线程安全的 3. 单线程使用hashmap,因为它更快,或者说时间效率更高
2016-11-30 14:21:32 154
原创 Vector和ArrayList的区别
更加有趣的是: 如果你对此感兴趣,请自己深入探讨。 参考: http://stackoverflow.com/questions/2986296/what-are-the-differences-between-arraylist-and-vector 更新: 我今天打开ArrayList的源码,(如上图所示)如果空间不够,再次分配时增加的空间大小为(oldCapacity >>
2016-11-30 12:27:35 180
原创 StringBuffer和StringBuilder的区别
StringBuffer is synchronized, and StringBuilder is not. It is the main difference between StringBuffer and StringBuilder.Here's a simple benchmark test:public class Main { public static void main
2016-11-30 11:55:10 259
原创 为什么String连接字符串很慢
一段String 连接字符串的用法public String joinWords(String[] words){ String init = ""; for(String s:words){ init+=s;//每次拼接两个字符串 } return init; } 分析:每次拼接两个字符串时,包含
2016-11-30 11:37:01 1106
原创 上楼梯
package 上楼梯;public class GoUpstairs { private static final int MOD = 1000000007; public int countWays(int n) { // write code here if (n == 1) return 1; if (n
2016-11-30 11:24:03 173
原创 原串翻转
C++的解法这里是题目链接 本题要求不能使用额外的空间,所以不能用java做,下面是C++的解法。#include <iostream>using namespace std;class Reverse {public: string reverseString(string iniString) { int len = iniString.length();
2016-11-26 21:35:34 181
原创 确定字符互异
这是题目链接暴力法注意:题目要求不能用额外的空间 时间复杂度 = min( 257 , str.length())* min(257, str.length())import java.util.*;public class Different { public boolean checkDifferent(String iniString) { if(iniStri
2016-11-26 19:29:11 158
原创 构建乘积数组
package 构建乘积数组;import java.util.ArrayList;public class Solution { public int[] multiply(int[] A) { int len = A.length; int[] left = new int[len]; System.arraycopy(A, 0, left
2016-11-26 17:39:25 135
原创 把二叉树打印成多行
package 把二叉树打印成多行;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNo
2016-11-26 14:37:26 206
原创 和为S的两个数
package 和为S的两个数;import java.util.ArrayList;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) { ArrayList<Integer> res = new ArrayList<Integer>();
2016-11-26 13:11:02 174
原创 把数组排成最小的数
package 把数组排成最小的数;import java.util.Arrays;import java.util.Comparator;public class Solution { public String PrintMinNumber(int[] array) { if (array == null) { return null;
2016-11-26 12:45:19 139
原创 数组中只出现一次的两个数字
package 数组中只出现一次的数;public class Solution { public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { int len = array.length; int aXorb = 0; for (int i = 0; i < l
2016-11-26 12:24:18 162
原创 数字在有序数组中出现的次数
二分法的应用package 统计一个数在有序数组中出现的次数;public class Solution { public int GetNumberOfK(int[] array, int k) { int len = array.length; if (0 == len) { return 0; }
2016-11-25 21:28:46 276
原创 从1到n的n个整数中1出现的次数
分析暴力解法的优劣 首先这道题是可以用比较暴力的思想解决,是这样的,枚举闭区间 [1, n]中的每一个数,然后计算这每一个数中包含的1的数目,然后将数目累和起来, 就得到了最后的结果。 分析: 1. 时间复杂度:由于 10 进制的整数 N 有 logN 位,所以考察一个整数中含有 1 的个数的代价是 O(log N),一共需要考察 N 个数。所以这种解法的时间复杂度
2016-11-25 16:36:17 180
原创 重建二叉树
package 重建二叉树;class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}public class Solution { public TreeNode reConstructBinaryTree(int[] p
2016-11-25 15:02:05 141
原创 最小的k个数
package 最小的k个数;import java.util.ArrayList;import java.util.PriorityQueue;public class Solution { PriorityQueue<Integer> pq = new PriorityQueue<Integer>(); ArrayList<Integer> res = new ArrayLis
2016-11-24 09:43:04 155
原创 单链表的逆转
package 翻转链表;// Definition for ListNode.class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; this.next = null; }}public class Solution { /**
2016-11-23 23:25:59 207
原创 左旋字符串
package 左移字符串;public class Solution { public String LeftRotateString(String str,int n) { if(str == null){ return str; } int len = str.length(); if(len ==
2016-11-23 21:14:28 171
原创 二叉树中和为某一值的路径
package 二叉树中和为某一值的路径;import java.util.ArrayList;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}publi
2016-11-23 16:57:12 160
原创 变态跳台阶
第一种解法这道题是这样思考的,n表示有n个台阶。那么-->if(n==1) ans?if(n==2) ans?if(n==3) ans?if(n==4) ans?相信你算前四项后,会有很大的发现。(just do it)package 变态跳台阶;public class Solution { static final int MAX = 32; static int[]
2016-11-23 13:41:03 164
原创 字符流中第一次出现的字符
一个简单的说明 网上大多数的代码都是差不多的,它们的代码单次查询的时间复杂度是O(n),下面的代码时间复杂度是O(1)的,想想为什么? 注意事项:不要被while欺骗了package 字符流中第一个不重复的字符;import java.util.HashMap;import java.util.LinkedList;import java.util.Queue;public cl
2016-11-23 13:05:37 224
原创 数组中重复的数字
package 数组中重复的数字;public class Solution { // Parameters: // numbers: an array of integers // length: the length of array numbers // duplication: (Output) the duplicated number in the arr
2016-11-23 12:16:16 169
原创 判断一棵树是否是平衡二叉树
package 判断一棵树是否是平衡二叉树;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { publ
2016-11-23 11:47:52 257
原创 数组中出现次数超过一般的数字
package 把数组排成最小的数;public class Solution { public int MoreThanHalfNum_Solution(int[] array) { if (null == array) { return 0; } int len = array.length; if (
2016-11-22 19:44:51 221
原创 连续子数组的最大和
解题思路题意题目链接:这是题目链接 题目内容:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢? 例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,
2016-11-22 09:07:33 466
原创 不用+-*/实现加法
package 位运算实现加法;public class Solution { public int Add(int num1,int num2) { if(0 == num2){ return num1; } else { return Add(num1 ^ num2, (num1&num2)<<1);
2016-11-21 19:18:10 531
原创 判断一棵二叉树是否是对称的
package 对称的二叉树;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { boolean is
2016-11-21 16:41:19 329
原创 二叉树的下一个节点
解题思路 这道题是这样思考的,请回答下面我写的几个问题?一 节点2的下一个节点是什么?二 节点1的下一个节点是什么?三 节点3的下一个节点是什么?(看上面的一副图)四 节点4的下一个节点是什么? 最后的思考(重要的是)自己如何用递归独立实现代码。package 二叉树的下一个节点;class TreeLinkNode { int val; TreeLinkN
2016-11-21 16:16:03 831
原创 二叉树的深度
package 求二叉树的深度;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { public int
2016-11-21 13:55:32 438
原创 两个链表的第一个公共节点(引用相同)
package 找到第一个公共的节点;import java.util.HashMap;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { HashMap<ListNode,
2016-11-21 12:53:34 301
原创 合并两个有序的链表
package 合并两个有序的链表;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { public ListNode Merge(ListNode list1,ListNod
2016-11-21 12:28:36 460
原创 删除链表中重复的节点
package 删除链表中重复节点;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { public ListNode deleteDuplication(ListNode pH
2016-11-21 11:56:52 515
原创 字符串中第一个字符出现的位置
package 数据流中的中位数;import java.util.ArrayList;import java.util.HashMap;//import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Solution { public int FirstNotR
2016-11-20 22:07:47 2674
原创 数据流中的中位数
package 数据流中的中位数;import java.util.Comparator;import java.util.PriorityQueue;public class Solution { private PriorityQueue<Integer> smallHeap = new PriorityQueue<Integer>(); private PriorityQue
2016-11-20 20:57:18 493
原创 丑数
这里是题目链接,请点开查看原题这篇blog的目的和侧重首先请你点开题目链接,并且认真思考,自己好的,首先我说明一下这篇博客的侧重点,我们将一起探讨这道题目各种解法的时间复杂度和空间复杂度。import java.util.LinkedList; import java.util.Queue;public class Solution { public int GetUglyNumbe
2016-11-20 20:43:24 645
原创 复杂链表的复制
下面的代码通不过测试,但是可以提供思路和一些测试数据,以后慢慢想吧,如果你发现了其中的错误错误,请在下面评论,如果你有更好的解法,请在下面评论。[评测网站--复杂链表的复制,这是题目链接](http://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&tqId=11178&rp=2&ru=/ta/coding-i
2016-11-20 11:41:36 511
原创 环形打印矩阵
import java.util.ArrayList;public class Solution { public static ArrayList<Integer> printMatrix(int[][] matrix) { ArrayList<Integer> als = new ArrayList<Integer>(); if (null == ma
2016-11-19 12:57:57 1024
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人