算法
Benett-Chen
心存美好,向往未来
展开
-
算法基础-数组
收获点滴:1.数组的查询效率比链表高?答:哪怕排好序的数组,利用二分法查询时间复杂度也是 O(logn)。所以,正确的表述应该是,数组支持随机访问,根据下标随机访问的时间复杂度为 O(1)。2.数组插入和删除的效率低?答:对于实际上,在某些特殊场景下,我们并不一定非得追求数组中数据的连续性。如果我们将多次删除操作集中在一起执行,删除的效率是不是会提高很多呢?,如果数组只是存储数据的容器,存...原创 2019-10-23 17:51:35 · 102 阅读 · 0 评论 -
常用排序算法备忘录
快速排序public class QuickSort { public static void main(String[] args) { int[] array = {3, 5, 1, 4, 6, 2, 8,7};//3, 5, 1, 4, 6, 2, 8 StringBuilder sb = new StringBuilder(); n...原创 2019-09-10 11:01:59 · 140 阅读 · 0 评论 -
算法常用工具类
public class ListNode { public int val; public ListNode next; public ListNode(int x) { val = x; } public static ListNode mockHeadNode() { ListNode listNode = new ...原创 2019-09-08 22:24:24 · 1390 阅读 · 0 评论 -
Simplify Path
Given an absolute path for a file (Unix-style), simplify it.For example, path = “/home/”, => “/home” path = “/a/./b/../../c/”, => “/c”思路:将路径根据“/”进行分割,得到去掉“/”的数组,然后将数组的内容放入栈中,当遇到“..”时,就把栈中的一个元素pop出来,当原创 2017-09-18 09:11:47 · 591 阅读 · 0 评论 -
最大和子序列
给定一个数组,里面的数有正有负,如何得到该数组中,最大和的子序列呢? 得到最大和子序列,那么就先求最大和嘛,在求最大和的过程中记录一下起始下标和终点下标就好了。 下面列出代码:public void maximumSubsequence (int arr[]) { int max = arr[0]; int sum = 0; int s = 0,s原创 2017-09-17 17:44:20 · 696 阅读 · 0 评论 -
Single Number
Single Number I Given an array of integers, every element appears twice except for one. Find that single one.思路:只要将所有数组中的数组进行异或即可,因为相同两个数异或结果为0 代码如下:public int singleNumber(int[] nums) { in原创 2017-08-30 12:42:38 · 3467 阅读 · 0 评论 -
Java实现组合C(m,n)
今天刚做完排列A(m,n)问题,又来个组合问题,开始以为差不多,后面发现还有有点差距的,话不多说,列出代码,以方便后面回顾。package sky_100;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * * @author Benett * @date 2017年8月23日 下午原创 2017-08-23 23:55:51 · 18381 阅读 · 0 评论 -
从10万个数中找10个最大的数
对于这种题目,最普通的想法是先对这10万个数进行排序,然后再选取数组中前10个数,即为最后的答案,排序算法的时间复杂度不下于O(N lgN)。最好的方法是建立一个最小堆。 算法描述: 我们首先取10万个元素中的前10个元素来建立由10个元素组成的最小堆。这样堆顶元素便是当前已知元素的第10大的数;然后依次读取剩下的99990个元素,若读取的元素比堆顶元素大,则将堆顶元素和当前元素替换,并自堆顶至原创 2017-08-29 11:20:39 · 23784 阅读 · 4 评论 -
Excel Sheet Column
Given a column title as appear in an Excel sheet, return its corresponding column number.For example:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 思路:26进制,将字符串从左往右遍历,每次得到的字母转为数字,然后加上次的的数并乘以对应的基数。原创 2017-08-28 15:09:07 · 5739 阅读 · 0 评论 -
Java实现排列A(m,n)
遇到一个算法题目,是求在n个数字中取m个数字(有序),有多少种可能。我一看,这么简单,就是A(n,m)呀。但是自己动手写代码的时候却发现好难实现,这就是所谓眼高手低吧,网上查了一下,把自己的理解记下来吧,方便以后回顾:package sky_100;import java.util.Arrays;import java.util.LinkedList;import java.util.List;原创 2017-08-23 18:52:19 · 10443 阅读 · 0 评论 -
Remove 9
题目: Start from integer 1, remove any integer that contains 9 such as 9, 19, 29… So now, you will have a new integer sequence: 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, … Given a positive integer n, you need t原创 2017-08-26 22:52:25 · 7115 阅读 · 0 评论 -
Symmetric Tree
题目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric:1 / \ 2 2 / \ / \ 3 4 4 3原创 2017-08-27 11:55:25 · 6776 阅读 · 0 评论