数据结构&算法
主要介绍常见的数据结构及各个算法功能
Sunny_Ran
这个作者很懒,什么都没留下…
展开
-
LeetCode-最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?//动态规划 public int lengthOfLIS(int[] nums) { if (nums.l原创 2020-07-06 22:41:32 · 550 阅读 · 0 评论 -
LeetCode-Count Numbers with Unique Digits
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.Example:Input: 2Output: 91Explanation: The answer should be the total numbers in the range of 0 ≤ x < 100,excluding 11,22,33,44,55,66,77,88,99Constraints原创 2020-07-06 21:44:56 · 856 阅读 · 0 评论 -
LeetCode-全排列
Given a collection of distinct integers, return all possible permutations.Example:Input: [1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]第一种我随手写的一个深度优先的算法 public List<List<Integer>> permute(int[] nums) { L原创 2020-06-11 00:10:47 · 273 阅读 · 0 评论 -
LeetCode-跳跃游戏 III
这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]。请你判断自己是否能够跳到对应元素值为 0 的 任意 下标处。注意,不管是什么情况下,你都无法跳到数组之外。示例 1:输入:arr = [4,2,3,0,3,1,2], start = 5输出:true解释:到达值为 0 的下标 3 有以下可能方案: 下标 5 -> 下标 4 -> 下标 1 -> 下标 3 下原创 2020-06-04 21:25:57 · 316 阅读 · 1 评论 -
分布式一致性算法(Paxos&Raft)
分布式一致性的基本概念一致性概念分布式系统通常由异步网络连接的多个节点构成,每个节点有独立的计算和存储,节点之间通过网络通信进行协作。分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值即被确定。在分布式存储系统中,通常以多副本冗余的方式实现数据的可靠存储。同一份数据的多个副本必须保证一致,而数据的多个副本又存储在不同的节点中,这里的分布式一致性问题就是存储在不同节...原创 2020-04-23 21:32:07 · 1282 阅读 · 1 评论 -
LeetCode-Add Two Numbers II
DescriptionYou are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers an原创 2017-07-30 20:03:56 · 280 阅读 · 0 评论 -
LintCode-最大间距
最大间距 给定一个未经排序的数组,请找出其排序表中连续两个要素的最大间距。如果数组中的要素少于 2 个,请返回 0.可以假定数组中的所有要素都是非负整数,且最大不超过 32 位整数。样例给定数组 [1, 9, 2, 5],其排序表为 [1, 2, 5, 9],其最大的间距是在 5 和 9 之间,= 4.//第一次用的冒泡法排序后 出现超时。class Solution { /**原创 2016-03-07 16:37:52 · 639 阅读 · 0 评论 -
LintCode-返回两个数组的交
返回两个数组的交样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].没什么难度,用Hash表即可public class Solution { /** * @param nums1 an integer array * @param nums2 an integer array * @return an intege原创 2016-08-09 00:27:43 · 1612 阅读 · 2 评论 -
LeetCode题解
Add Two NumbersYou are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbe原创 2017-01-07 22:19:45 · 627 阅读 · 0 评论 -
LintCode-有效回文串
有效回文串 给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。样例 “A man, a plan, a canal: Panama” 是一个回文。“race a car” 不是一个回文。注意 你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。在这个题目中,我们将空字符串判定为有效回文。挑战 O(n) 时间复杂度,且不占用额外空间。public cl原创 2015-11-08 22:51:57 · 682 阅读 · 0 评论 -
LintCode-x的平方根
x的平方根实现 int sqrt(int x) 函数,计算并返回 x 的平方根。样例 sqrt(3) = 1sqrt(4) = 2sqrt(5) = 2sqrt(10) = 3二分法:我们知道假使y表示x的平方根的值,那么可以确定0<=yclass Solution { /** * @param x: An integer * @return: The sqrt of原创 2015-10-01 16:22:37 · 613 阅读 · 0 评论 -
LintCode-O(1)检测2的幂次
用 O(1) 时间检测整数 n 是否是 2 的幂次。样例n=4,返回 true;n=5,返回 false.注意O(1) 时间复杂度class Solution { /* * @param n: An integer * @return: True or false */ public bo原创 2015-10-01 15:51:43 · 2060 阅读 · 0 评论 -
LintCode- 恢复IP地址
恢复IP地址 给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。 样例给出字符串 “25525511135”,所有可能的IP地址为:[ “255.255.11.135”, “255.255.111.35” ] (顺序无关紧要)public class Solution { /** * @param s the IP string * @ret原创 2016-02-28 15:45:31 · 1560 阅读 · 0 评论 -
LintCode-生成括号
生成括号 给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。样例 给定 n = 3, 可生成的组合如下:“((()))”, “(()())”, “(())()”, “()(())”, “()()()”public class Solution { /** * @param n n pairs * @return All combinations原创 2016-02-27 23:29:07 · 1025 阅读 · 0 评论 -
LintCode- 分割回文串
分割回文串 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。返回s所有可能的回文串分割方案。样例给出 s = “aab”,返回[ [“aa”, “b”], [“a”, “a”, “b”] ]//这里运用了回溯算法 递推调用 动态规划的算法思想public class Solution { /** * @param s: A string * @原创 2016-03-11 23:14:28 · 750 阅读 · 0 评论 -
LintCode- 二叉树的所有路径
二叉树的所有路径 给一棵二叉树,找出从根节点到叶子节点的所有路径。 样例 给出下面这棵二叉树:1 / \ 2 3 \ 5 所有根到叶子的路径为:[ “1->2->5”, “1->3” ]/** * Definition of TreeNode: * public class TreeNode { * public int val; *原创 2016-02-26 20:58:21 · 2408 阅读 · 1 评论 -
Java 随机数生成的方法实现与应用-random
static void setSeed(long seed) 设置随机生成器的种子 /****************************** 随机数中用到。每次的Seed不同,random就不同了。 在进行随机时,随机算法的起源数字称为种子数(seed), 在种子数的基础上进行一定的变换,从而产生需要的随机数字原创 2015-09-05 13:04:07 · 997 阅读 · 0 评论 -
LeetCode-Median of Two Sorted Arrays
LeetCode原创 2017-02-28 20:31:18 · 331 阅读 · 0 评论 -
Coin Change 2-硬币问题
Coin Change 2 Add to List You are given coins of different denominations and a total amount of money. Write a function to compute the number of combinations that make up that amount. You may assume th原创 2017-03-07 23:03:01 · 1664 阅读 · 0 评论 -
LeetCode-Score After Flipping Matrix
We have a two dimensional matrix A where each value is 0 or 1.A move consists of choosing any row or column, and toggling each value in that row or column: changing all 0s to 1s, and all 1s to 0s.Af...原创 2019-06-13 20:34:09 · 190 阅读 · 0 评论 -
LeetCode-Bitwise ORs of Subarrays
We have an array A of non-negative integers.For every (contiguous) subarray B = [A[i], A[i+1], …, A[j]] (with i <= j), we take the bitwise OR of all the elements in B, obtaining a result A[i] | A[...原创 2019-01-30 18:33:56 · 265 阅读 · 0 评论 -
LeetCode-Number of 1 Bits
Write a function that takes an unsigned integer and return the number of ‘1’ bits it has (also known as the Hamming weight).Example 1:Input: 00000000000000000000000000001011Output: 3Explanation: T...原创 2019-01-29 18:30:17 · 174 阅读 · 0 评论 -
LeetCode-Validate Stack Sequences
Given two sequences pushed and popped with distinct values, return true if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack.Example 1:...原创 2019-01-25 18:49:26 · 544 阅读 · 0 评论 -
LeetCode-String to Integer (atoi)
Implement atoi which converts a string to an integer.The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from thi...原创 2018-07-06 15:06:01 · 213 阅读 · 0 评论 -
LeetCode-First Missing Positive
Given an unsorted integer array, find the smallest missing positive integer.Example 1:Input: [1,2,0] Output: 3 Example 2:Input: [3,4,-1,1] Output: 2 Example 3:Input: [7,8,9,11,12] Output:...原创 2018-06-06 16:35:06 · 186 阅读 · 0 评论 -
LeetCode-Missing Number
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.原创 2017-12-14 17:31:43 · 276 阅读 · 0 评论 -
LeetCode-Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Your goal is to reach the原创 2017-12-14 17:04:41 · 331 阅读 · 0 评论 -
LeetCode-Odd Even Linked List
DescriptionGiven a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.You should try to do原创 2017-07-30 21:23:15 · 414 阅读 · 0 评论 -
2017 后端面试经历分享
后端面试分享转载 2017-03-23 18:56:49 · 4717 阅读 · 1 评论 -
LintCode-快乐数
快乐数 写一个算法来判断一个数是不是”快乐数”。一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。样例 19 就是一个快乐数。1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2原创 2016-02-26 19:52:47 · 1850 阅读 · 0 评论 -
LintCode-删除链表中的元素
删除链表中的元素 删除链表中等于给定值val的所有节点。样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next原创 2016-02-26 19:29:20 · 4473 阅读 · 0 评论 -
LintCode-删除排序链表中的重复元素
容易 删除排序链表中的重复元素 查看运行结果 38% 通过 给定一个排序链表,删除所有重复的元素每个元素只留下一个。您在真实的面试中是否遇到过这个题? Yes 样例 给出1->1->2->null,返回 1->2->null给出1->1->2->3->3->null,返回 1->2->3->null这里写代码片原创 2015-10-23 15:05:43 · 430 阅读 · 0 评论 -
LintCode-删除排序数组中的重复数字 II
容易 删除排序数组中的重复数字 II查看运行结果 30%通过跟进“删除重复数字”:如果可以允许出现两次重复将如何处理?您在真实的面试中是否遇到过这个题? Yes样例给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。publi原创 2015-10-23 12:51:46 · 423 阅读 · 0 评论 -
LintCode-链表插入排序
容易 链表插入排序用插入排序对链表排序您在真实的面试中是否遇到过这个题? Yes样例Given 1->3->2->0->null, return 0->1->2->3->null冒泡法遍历/** * Definition for ListNode. * public class ListNode原创 2015-11-06 11:50:12 · 649 阅读 · 0 评论 -
LintCode-链表划分
容易 链表划分 查看运行结果 29% 通过 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。您在真实的面试中是否遇到过这个题? Yes 样例 给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null这里对题目理解有点问题:案例一:输入1->4->3->2->原创 2015-11-06 15:54:02 · 464 阅读 · 0 评论 -
LintCode-中位数
容易 中位数 查看运行结果 给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5挑战 时间复杂度为O(n)public class Solution { /** * @param nums: A list of int原创 2015-10-04 21:01:53 · 1005 阅读 · 0 评论 -
LintCode-两个链表的和
容易 两个链表的和你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null/** * Definition for singly-lin原创 2015-10-04 19:50:33 · 1076 阅读 · 0 评论 -
LintCode-主元素
容易 主元素给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例 给出数组[1,1,1,1,2,2,2],返回 1挑战 要求时间复杂度为O(n),空间复杂度为O(1)public class Solution { /** * @param nums: a list of integers * @return: find a majo原创 2015-10-04 21:22:20 · 367 阅读 · 0 评论 -
LinkCode- Maximal Square
Maximal SquareGiven a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.样例For example, given the following matrix:1 0 1 0 0原创 2015-09-26 22:04:45 · 498 阅读 · 0 评论 -
LinkCode-最长单词
最长单词给一个词典,找出其中所有最长的单词。样例在词典{ "dog", "google", "facebook", "internationalization", "blabla"}中, 最长的单词集合为 ["internationalization"]在词典{ "like", "love", "h原创 2015-08-31 10:24:38 · 1107 阅读 · 0 评论