LeetCode
你能不能别说话
这个作者很懒,什么都没留下…
展开
-
LeetCode——101. Symmetric Tree (bfs)
思路:通过 取出队首元素,将它的左子树与右子树的值加入到aList中,并加他们入队。alist一次只加入该层的所有元素,这个是通过time来控制的。将加入alist的一层所有元素进行首尾依次进行判定。代码如下:public class Solution { public boolean isSymmetric(TreeNode root) { if(r原创 2017-01-04 17:05:51 · 310 阅读 · 0 评论 -
牛客网——美团——最大差值
题目描述有一个长为n的数组A,求满足0≤a≤b给定数组A及它的大小n,请返回最大差值。测试样例:[10,5],2返回:0public class LongestDistance { public int getDis(int[] A, int n) { // write code here if(n==1){retur原创 2017-03-27 12:40:42 · 320 阅读 · 0 评论 -
牛客网——合并两个排序的链表
思路,取出两表中最小的值为头结点。然后从两表中依次必较将较小的结点接到它后面,依次执行。如果有一个表完了,就直接把所有的接到后面。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public原创 2017-04-05 21:18:14 · 352 阅读 · 0 评论 -
牛客网——两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。解法思路:从第一个公共结点开始,后面的结点都会相同,那么可以考虑用栈来存储两个链表。然后依次将栈顶相同的结点输出去,用last结点来保存最后一次相同的结点,当两个栈顶的元素不同时。就可以return了。public class ListNode { int val; ListNode next = null;原创 2017-04-05 21:51:06 · 293 阅读 · 0 评论 -
LeetCode——17. Letter Combinations of a Phone Number
Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given below.Input:Digit st原创 2017-05-01 16:26:39 · 285 阅读 · 0 评论 -
牛客网——删除链表中重复结点 (多解)
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。我的解法不算好。用了HashSet先将链表遍历一遍,将重复的值存到了HashSet里面。(多使用了额外空间)然后构造了一个伪头结点接上原链表,是为了防止原头结点重复要删除。然后再遍历一遍,将重复的结点直接删原创 2017-04-06 19:27:59 · 256 阅读 · 0 评论 -
15.LeetCode——3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not contain原创 2017-04-22 15:36:21 · 197 阅读 · 0 评论 -
18LeetCode——4sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: The solution原创 2017-04-22 15:58:55 · 213 阅读 · 0 评论 -
LeetCode——11. Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Fin原创 2017-04-27 18:21:20 · 227 阅读 · 0 评论 -
牛客网——去哪儿网——二分查找
题目描述对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。测试样例:[1,3,5,7,9],5,3返回:1public class Binar原创 2017-03-26 16:48:54 · 424 阅读 · 0 评论 -
牛客网——从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/i原创 2017-04-02 16:37:26 · 359 阅读 · 0 评论 -
牛客网——顺时针旋转矩阵
题目描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。测试样例:有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。测试样例:[[1,2,原创 2017-04-02 16:14:17 · 611 阅读 · 0 评论 -
LeetCode 104Maximum Depth of Binary Tree(DFS?)
题目:思路:最后一层(空层)返回0;然后上面层为其左右结点层数+1;递归; (dfs?)代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tr原创 2017-01-04 20:40:27 · 291 阅读 · 0 评论 -
LeetCode 102. Binary Tree Level Order Traversal(bfs)
题目是用队列每一次取它一层的元素,放入到ord里面。然后每层完了加入到order里面。核心是bfs代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode righ原创 2017-01-04 19:48:18 · 216 阅读 · 0 评论 -
LeetCode 108Convert Sorted Array to Binary Search Tree
题目:Given an array where elements are sorted in ascending order, convert it to a height balanced BST.Subscribe to see which companies asked this question。思路:要把升序数组 转换成(height balanced 平衡?原创 2017-01-04 21:29:12 · 254 阅读 · 0 评论 -
动态规划实现代码
案例2:给定一个矩阵m,从左上角开始每次只能向右走或者向下走,最后达到右下角的位置,路径中所有数字累加起来就是路径和,返回所有路径的最小路径和,如果给定的m如下,那么路径1,3,1,0,6,1,0就是最小路径和,返回12.1 3 5 98 1 3 45 0 6 18 8 4 0 实现代码如下: package com.test;原创 2017-01-05 21:09:22 · 689 阅读 · 0 评论 -
LeetCode 62. Unique Paths
思路:由于只能向右或向下移动,所以达到一个点的路径数目等与到达这个点上面和左边点的路径数之和,而最上边和最左边两条边的路径数都是1 代码如下: int [][]array=new int [m][n]; array[0][0]=1; //求出第一行的路径数 for(int i=1;i原创 2017-01-05 22:07:46 · 343 阅读 · 0 评论 -
LeetCode 46. Permutations
使用递归,每次添加不重复的数,添加满则加入到结果集中public class Solution { List> result = null; public List> permute(int[] nums) { if (nums == null || nums.length == 0) return result; result = n原创 2017-02-28 19:59:26 · 318 阅读 · 0 评论 -
LeetCode53. Maximum Subarray (子数组的最大和) 解题思路方法
最大连续子序列和,非常经典的题。当我们从头到尾遍历这个数组的时候,对于数组里的一个整数,它有几种选择呢?它只有两种选择: 1、加入之前的SubArray;2. 自己另起一个SubArray。那什么时候会出现这两种情况呢?如果之前SubArray的总体和大于0的话,我们认为其对后续结果是有贡献的。这种情况下我们选择加入之前的SubArray如果之前SubArray的总体和为0原创 2017-02-25 16:12:05 · 302 阅读 · 0 评论 -
2015 去哪儿校招---字符串中第一个重复的字符
题目描述对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。测试样例:"qywyer23tdd",11返回:y /** * 与剑指offer面试题中第35类似。但是有区别,那个是求第一个指只出现一次的字符,但是这个题原创 2017-03-25 19:47:24 · 333 阅读 · 0 评论 -
基本算法——快速排序
每次将传入的该段的第一个节点保存,依次从尾开始找到一个比该保存的数小的,然后放到第一个节点处,然后从头往后找比保存数大的,然后放到上一个节点处。依次进行。直到头和尾指针相遇,表示前面都是比保存的数小的,后面都是比保存的数大的。而该位置就是保存数的位置。然后依次递归。则可以了public void quickSort(int[]array,int left,int right)原创 2017-05-30 11:53:32 · 172 阅读 · 0 评论