自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 142环形链表2

判断是否又环,并找到入口:在第一次相遇的位置,快指针比满指针多走了N圈,相对于从head点的位置,多走了一个环形圈长度的位移;从这里开始,一个从head出发,一个从此节点出发,每次都一步,直到相遇就是环的入口。public class Solution { public ListNode detectCycle( ListNode head ) { if( head ==...

2018-11-05 15:47:01 93

原创 两两翻转链表

    如题翻转链表,1,2,3,4,5 -> 2,1,4,3,5代码如下,注意判断需要保存下下一个节点,以及pre,用来保存两两翻转后1指向4 public ListNode reverseDoubleList(ListNode head) { if (head == null || head.next == null) return head; ListNode p = ...

2018-03-04 14:13:18 809

原创 114二叉树展开为链表Flatten Binary Tree To LinkedList

刚好头条笔试的时候问到了,记录一下答案。二叉树的题一般用递归的思想做,递归中注意两点:1、注意返回的边界条件2、注意模块化的思想,从局部都一点入手处理,然后对把处理逻辑当做完成的部分来处理,不要越陷越深回到题目,这道题目的思路是把给定的二叉树按照先序遍历的顺序转换成链表,二叉树的每个节点right指向下一个节点。对某一个节点进行处理,然后递归处理左节点、右节点,之后当做...

2018-03-04 14:08:20 118

原创 034Search for a Range重复数字二分查找

    给一个数组,包含了重复的数字,找出目标的左右下标,就是二分查找多加了个重复元素的条件,找到左右下标。    基本思路是,先二分查找,最后找到的话跳出,说明了找到了target,判断左右边界,接着用一个二分查找,注意这个二分查找的low、high改变条件与普通的不同,则可找到左右边界class Solution { public int[] searchRange(int[] num...

2018-02-09 14:59:59 241

原创 线程相关

CountDownLatch的用法:开一个线程可以等待其他所有线程完事之后再执行,注意等待的线程数目的大小示例代码如下:public class Solution { public static void main(String[] args) throws InterruptedException { ExecutorService executor = Executors.

2018-02-05 11:25:29 140

原创 236LCA

求二叉树的最小公共祖先(lowest common ancestor),如果是BST比较简单,时间复杂度O(logN),如果是普通二叉树稍微复杂一些,时间复杂度O(N);代码如下public class Solution { /* * 如果是BST的情况 */ public static TreeNode getBSTLCA(TreeNode root, TreeNode p,

2018-02-01 11:36:19 133

原创 offer29数组中超过一半的数字 && 51数组中重复的数字

两道题有点像,就直接放在一起写了。第一题找出数组中超过一半的数字,可以用map存储,key是数字,value是次数,记录后遍历value即可,时间复杂度o(n),但是需要o(n)的的空间复杂度。记录数组出现次数times,一次遍历,如果相同则times++,如果不同则--,因为数字次数超过一半,所以最后times>1的数字肯定是要找的数字。时间复杂度为o(n),空间复杂度o(1) public s

2018-01-27 11:47:26 106

原创 offer08旋转数组的最小数字

找出旋转数组的最小数字,如题所示,与上个一题有些类似 但还是不完全一样,主要是跳出循环判断不一样,需要找到最小的数字,mid每次变的时候也在原位置,并非+-1,否则错过最小值。最后,注意{2,1,2,2,2}这种left,mid,right一样的情况,只能用顺序查找法了,代码如下public static int search(int[] array) { int left = 0, righ

2018-01-26 15:11:55 134

原创 033Searchr in Rotated Sorted Array

    给一个旋转数组,找出要的数字。    是一个二分查找的变种,每次变换数组后有数组两种可能性,一种是array[mid]比array[left]大,另一种是比他小;如果大的话判断是否在左边,直接用二分法,如果不是接着循环判断;比他小的情况类似。注意点:边界值,array[mid]>=array[left]中的等号,另一个是target >= array[left]中的等号publ...

2018-01-24 16:19:13 180

原创 连续子数组的最大和

一个有N个元素的整型数组arr,有正有负,数组中连续一个或多个元素组成一个子数组,这个数组当然有很多子数组,求子数组之和的最大值。例如:[0,-2,3,5,-1,2]应返回9,[-9,-2,-3,-5,-3]应返回-2。F(i):以array[i]为末尾元素的子数组的和的最大值,子数组的元素的相对位置不变F(i)=max(F(i-1)+array[i] , array[i]

2018-01-11 14:47:53 126

原创 一些面试经验

最重要的事情应该是在一个适合思考的时刻,去思考和总结自己所经历的过去以及所掌握的技术,要总结到精髓,并且挖掘出自己至少一个亮点,在每次跳槽和面试的时候,不断总结自己,深度挖掘自己的亮点面试问题:项目经验,缓存,并发,JVM内存,算法题目内容是,写一个函数,它的作用是接受一个整数(假设为length),返回一个数组,数组的长度为length,数组中的内容为随机的0至(length-1)的值,并且不能...

2018-01-06 16:17:25 245

原创 141Linked List Cycle

题目就是判断是否有环,虽然不难但还是动手写一下吧。如果不要求额外空间的话,可以直接用set集合存储节点,判断是否有有重复,这样遍历一遍需要额外空间O(n);所以用快慢指针,快的总能套圈慢的,就是圈数多少的问题,注意边界条件!!public class Solution { public boolean hasCycle(ListNode head) { ...

2018-01-05 11:45:42 136

原创 046Permutations

数组的全排列开始定势思维了,按照subsets题目,在dfs参数中加了个下标index,其实不用,注意ArrayList在remove删除下标时是index不是元素,直接上代码class Solution { public static List<List<Integer>> ans = new ArrayList<>(); pub...

2018-01-05 11:15:36 146

原创 198House Robber

大意:给一个数组,相邻两个不能取,求取出的最大值。动态规划题目,先暴力递归,然后拿数组记录重复的,剪枝。自顶向下解法class Solution { public static int[] array = new int[100]; public int solve(int index, int[] nums) { if (index < 0 || nums == ...

2018-01-02 10:34:42 133

原创 051N-Queens

写到subsets,顺便回想了一下8皇后问题,写个答案记录一下吧每次从列开始遍历,1皇后放在第一行第一列,2皇后放在第二行第一列,是否ok?第二列是否ok?ok后进入下一行,3皇后放在第三行第一列是否ok?第二列?。。。全部放完之后回到1皇后第一行第二列.class Solution { public static List> ans = new ArrayList<>();

2017-12-28 11:59:42 163

原创 078Subsets

列出全排列,类似于dfs,用一个递归实现即可,返回值比较麻烦,就简化了用一个全局变量记录了答案,代码如下:class Solution {public static boolean v[] = new boolean[100]; public static List> ans = new ArrayList<>(); public void dfs(int index, int[] n

2017-12-26 15:40:42 110

原创 104Maximum Depth of Binary Tree

递归的话没什么好讲的class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } return Math.max(maxDepth(root.left),maxDepth(root.right))+1; }}非递归可以用层序遍历

2017-12-26 15:04:06 93

原创 jQuery学习

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here $(function(){ alert($("#button").val()); $("#button").click(function(){

2017-12-24 17:33:21 95

原创 offer37两个链表的第一个公共节点

输入两个链表l1和l2,找出它们的第一个公共节点。思路:单链表如果有公共节点,肯定为Y型,从末尾扫描到头可找出第一个不相同的即可,l1和l2压栈,从尾开始弹出,第一个不相同的即为答案,时间复杂度O(m+n),需要额外空间复杂度O(m+n);若知道两个链表长度,长的先走几步,然后两链表同步向前,找出第一个相同的节点,这种不需要额外空间,时间复杂度O(m+n),代码如下public

2017-12-21 19:33:49 145

原创 035Search Insert Position

Input: [1,3,5,6], 5Output: 2在一个数组中插入一个数字,输出下表,一个二分查找算法,时间复杂度O(logN)class Solution { public int searchInsert(int[] nums, int target) { int low = 0; int high = nums.length - 1; int

2017-12-21 11:37:32 95

原创 021Merge Two Sorted Lists

合并两个有序链表,链表问题建立一个伪头结点很好使,当前指针从p从p.next开始,返回head.next代码如下:ListNode head = new ListNode(0); ListNode p = head; while (l1 != null || l2 != null) { if (l1 == null) { p.next = l2; bre

2017-12-20 17:28:10 118

原创 020Valid Parentheses

一道栈的练习题,遇到左边的括号压栈,否则弹出栈中元素,如果匹配,且遍历完栈中为空 说明正确,代码如下class Solution { public boolean isValid(String s) { Stack stack = new Stack(); if (s == null) { return false; } for (int i = 0;

2017-12-20 17:11:39 119

原创 019Remove Nth Node From End of List

删除倒数第N个链表节点,快慢指针,快的先走几步,然后慢点再走,如果是第一个需要特殊处理一下,其他情况直接返回即可,还需要提高解题速度啊....class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pAhead = head; ListNode pBehind

2017-12-17 16:07:05 136

原创 Java线程池

JAVA提供四种线程池:1、newCachedThreadPool创建一个可缓存线程池,线程池长度超出,则灵活回收空闲线程,若无空闲则新建线程。每次execute时,task还没有执行完(sleep500),因此会开启新的线程;如果修改sleep(0),则当需要执行第二个任务时execute第一个任务已经执行完,则会复用执行第一个任务的线程,而不创建新的线程,线程池大小不限制。public

2017-12-16 14:24:37 116

原创 003Longest Substring Without Repeating Characters

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.求最长子字符串的长度,注意是连续的子字符串。双指针维护一个动态窗口,遍历一个长度即可,时间复杂度O(n),

2017-12-13 16:38:52 96

原创 002Add-Two-Numbers

给两个链表:Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8第一道链表题,顺便复习一下链表知识,链表题目一般加一个表头dummyhead,和一个当前节点p 经验总结:想好思路在动手,没思路的话就按最简单的方法边想边写,否则会浪费很多时间debug。。上代码:

2017-12-12 00:01:29 172

原创 001Two-Sum

把以前在GitHub上记录的LeetCode全部挪到这里来,发现这里还是比较方便。Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].给一个数组找出两个书之和是target数。 可以暴力解法nxn,但肯定超时。class Solution {

2017-12-11 23:03:00 117

原创 电商项目实战

1、数据表结构设计不建议使用外键;唯一索引,单索引,组合索引,时间戳,create_time,update_time;nginx安装:80端口被pid为4的system进程占用,解决方法:百度经验,改了注册表的一个设置。正向代理代理的对象时客户端,隐藏真实客户端,反向代理的对象是服务端,隐藏真实服务端properties读取文件时,在同一个src目录下String filename = "mmal...

2017-11-30 16:51:44 942

原创 SpringMVC+Mybatis项目

今天搞SpringMVC+Mybatis整合项目,dataSource注入死活搞不定,后来搜了很久发现jar包没引,后来引入之后发现没引对。。以后出现问题先检查代码,如果没问题,再检查是否jar引入对了。commons-pool-1.6.jar;commons-collections-3.2.1.jar;commons-logging-1.2.jarcontroller校验客户端提交数据,serv...

2017-11-28 10:17:28 234

空空如也

空空如也

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

TA关注的人

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