算法
文章平均质量分 86
算法
givmchickenblood
try to like it,do it
展开
-
BitMap位图索引
参考https://www.cnblogs.com/lbser/p/3322630.htmlhttps://blog.csdn.net/catoop/article/details/1116897771、案例有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚、离婚这三项,该表共有100w个记录。现在有这样的查询: select * from table where Gender=‘男’ and Marital=“未婚”;姓转载 2021-11-08 20:29:29 · 317 阅读 · 0 评论 -
剑指offer(65):获取数据流中的中位数
题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后 中间两个数的 平均值分析:获取中位数有多种方法,但是各种方法的时间效率不一。下面是多种方法的时间复杂度的比较:有图可以知道使用AVL二叉平衡树的方法和使用最大堆最小堆的方法是总的时间复杂度最优的。但是AVL二叉...原创 2019-10-18 20:17:29 · 166 阅读 · 0 评论 -
单链表 是否有环+环入口
一、判断链表是否为带环链表思路:首先如何判断链表是否有环,这个时候首先需要知道链表是否为空,如果不为空,则继续判断。首先定义两个变量,一个fast,一个slow,让fast 每次走两步,slow每次走一步,当fast和slow相遇时,即是该链表存在环结构。如果该链表为无环结构,则当遍历完这个链表时也不会相遇。即是返回false。public class Solution { ...转载 2019-10-17 15:03:10 · 141 阅读 · 0 评论 -
每日温度
题目:根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的都是 ...转载 2019-10-16 11:18:34 · 187 阅读 · 0 评论 -
剑指offer 把字符串转换成整
public class StrToInt { //标记参数是否合法 boolean argsValid=true; public int StrToInt(String str) { if (str == null || str.trim().length() == 0) { argsValid=false; ...原创 2019-03-18 15:21:34 · 110 阅读 · 0 评论 -
数组和链表的区别
https://blog.csdn.net/qq_25806863/article/details/70607204数组的特点在内存中,数组是一块连续的区域。 拿上面的看电影来说,这几个人在电影院必须坐在一起。数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。 比如看电影时,为了保证10个人能坐在一起,必须提前订好10个连续的位置。这样的好处就是能保证10个人可以在一起。但...转载 2019-03-18 15:58:12 · 83 阅读 · 0 评论 -
完美洗牌算法
https://www.cnblogs.com/liuzhen1995/p/6710029.html没把空间复杂度O(1)的搬过来~~~问题描述有一个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后变成{a1,b1,a2,b2,a3,b3,…,an,bn},请考虑有没有时间复杂度为O(n)而空间复杂度为O(1)的解法。 String[] A = {""...转载 2019-03-24 16:23:28 · 372 阅读 · 0 评论 -
剑指offer 链表中环的入口结点
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { /*思路: ...原创 2019-03-18 12:15:13 · 94 阅读 · 0 评论 -
剑指offer16 反转链表
注意:输入参数:链表头指针为null或者链表中只有一个节点的用例。测试用例:null只有一个节点多个节点import BrushProblem.swordOffer2.ListNode;import java.util.Stack;/** * @Auther: * @Date: 2018/11/6 18:38 * @Description: 反转链表 */pub...原创 2019-03-18 11:19:00 · 78 阅读 · 0 评论 -
剪桌腿的最小代价
https://blog.csdn.net/liang0000zai/article/details/51188562Arthur最近搬到了新的别墅,别墅特别大,原先的桌子显得比较小,所以他决定换一张新的桌子。他买了一张特别大的桌子,桌子是由很多条桌腿进行支撑的,可是回到家之后他发现桌子不稳,原来是桌子腿长度不太相同。他想要自己把桌子修理好,所以他决定移除掉一些桌腿来让桌子变得平稳。桌子腿总共有...转载 2019-03-18 09:10:16 · 147 阅读 · 0 评论 -
最短路径问题---Floyd算法详解
转自https://blog.csdn.net/qq_35644234/article/details/60875818Floyd算法的介绍1. 算法的特点:弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。2. 算法的思路通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需...转载 2019-03-04 15:35:41 · 2142 阅读 · 0 评论 -
最短路径问题---Dijkstra算法详解
参考https://blog.csdn.net/qq_35644234/article/details/60870719思想:Dijkstra算法采用的是一种贪心的策略,声明一个数组dis来保存源点到各个顶点的最短距离和一个保存已经找到了最短路径的顶点的集合:T,初始时,原点 s 的路径权重被赋为 0 (dis[s] = 0)。若对于顶点 s 存在能直接到达的边(s,m),则把dis[m]设...转载 2019-03-04 15:02:33 · 505 阅读 · 0 评论 -
leetcode 525. 连续数组
题目:给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意: 给定的二进制数组的长度不会超过50000。HashMap&l...原创 2019-03-04 14:55:50 · 156 阅读 · 0 评论 -
leetcode 525. 连续数组
题目:给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意: 给定的二进制数组的长度不会超过50000。HashMap&l...原创 2019-03-04 12:32:11 · 269 阅读 · 0 评论 -
LC 826. 安排工作以达到最大收益 + LC 904. 水果成篮(滑动窗口)
LC 826. 安排工作以达到最大收益有一些工作:difficulty[i] 表示第i个工作的难度,profit[i]表示第i个工作的收益。现在我们有一些工人。worker[i]是第i个工人的能力,即该工人只能完成难度小于等于worker[i]的工作。每一个工人都最多只能安排一个工作,但是一个工作可以完成多次。举个例子,如果3个工人都尝试完成一份报酬为1的同样工作,那么总收益为 $3。如果...原创 2019-04-04 22:42:58 · 166 阅读 · 0 评论 -
腾讯 2018春招 笔试(安排机器;画家小Q;小Q的歌单;贪吃的小Q)
1 贪吃的小Q小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数,表示父母出差的天数N(N<=50000)和巧克力的数量M(N<=M<=100000)。输出描述:输出一个...原创 2019-04-05 16:14:10 · 303 阅读 · 0 评论 -
拓扑排序
在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点。先统计所有节点的入度,对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一。一直做改操作,直到所有的节点都被分离出来。有环的有向图不存在拓扑结构,也就是很多题目的无解的情况。拓扑排序可以判断图是否有环。下面是算法的演示过程:一个AOV网应该是一个有向无环图,即不应该带有回路,因为若带有回路,则回路上的所...原创 2019-10-01 22:08:32 · 144 阅读 · 0 评论 -
几种排序算法
https://blog.csdn.net/nyist_zxp/article/details/80401979#commentBox1、冒泡排序思路:假如数据的长度为n,那么需要循环n-1次进行冒泡,每一次冒泡找到最大值,放在数组结尾。时间复杂度:时间复杂度是O(n^2),最好情况是O(n)。空间复杂度:O(1),因为不需要额外的存储空间。最坏情况:数组是逆序的。稳定性:稳定,因为...原创 2019-09-09 09:12:21 · 191 阅读 · 0 评论 -
bitmap位图算法(未整理~某数是否在40亿个数中)
https://www.cnblogs.com/zhuoqingsen/p/9214709.html前言楼主酷爱王者,但是由于忙于业务,王者有一段时间没玩了,待再次上线的时候,TM(天美)发来了一封邮件,亲爱的召唤师,欢迎回归王者荣耀,你已有88日没有登录过游戏,这是为你精心准备的回归大礼包,礼包是一些体验卡和砖石等。but作为一名程序猿,让楼主更在意的是88这个数字的统计方式。王者荣耀用户...转载 2019-04-25 17:08:02 · 481 阅读 · 0 评论 -
你真的会写二分检索吗?
转自https://mp.weixin.qq.com/s?__biz=MzUxOTc4NjEyMw==&mid=2247484132&idx=1&sn=d24991da2d56b6e483fa78925ec15479&chksm=f9f51900ce829016addd383a820fd4659e5236f306169d11ed611b16587527d87ad7...转载 2019-04-24 13:26:54 · 209 阅读 · 0 评论 -
三分法
https://blog.csdn.net/chenxiaoran666/article/details/79937474当答案具有可二分性时,我们可以用二分答案来解决。但是,如果要求出凸性函数或凹性函数的最值时,二分就毫无用武之地了,这时,我们就可以用三分法来求出答案。一个凸性序列/凹性序列通俗的说法就是在该序列最大值/最小值的左边满足不严格单调递增/递减,右边满足不严格单调递减/递增。如1...转载 2019-04-27 20:28:42 · 308 阅读 · 0 评论 -
LC 53. 最大子序和(DP)+ LC 152. 乘积最大子序列 + LC 238. 除自身以外数组的乘积
1、LC 53. 最大子序和(DP)给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。dp解决, O(N) TIME, O(N) SPACE public int maxSubArray(int[...原创 2019-04-09 15:07:04 · 146 阅读 · 0 评论 -
LC 446. 等差数列划分 II - 子序列
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从 0 开始。该数组子序列将划分为整数序列 (P0, P1, …, Pk),P 与 Q 是整数且满足 0 ≤ P0 < P...原创 2019-04-09 11:53:14 · 264 阅读 · 0 评论 -
LC 134. 加油站
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为...原创 2019-04-03 11:48:45 · 131 阅读 · 0 评论 -
LeetCode 871 最低加油次数
汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油...转载 2019-04-02 22:05:05 · 209 阅读 · 0 评论 -
LC 901. 股票价格跨度 LC 739. 每日温度
1、LC 901. 股票价格跨度编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。示例:输入:...原创 2019-04-08 10:35:36 · 182 阅读 · 0 评论 -
剑指offer二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2019-04-02 12:28:57 · 182 阅读 · 0 评论 -
剑指offer 字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。public class Permutation { /* 回溯法 思路: 把字符串分成2部分,...原创 2019-04-02 12:21:31 · 78 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
https://blog.csdn.net/v_JULY_v/article/details/6279498详细看原文啦~转载 2019-04-01 22:28:43 · 110 阅读 · 0 评论 -
LC 930. 和相同的二元子数组
在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组。示例:输入:A = [1,0,1,0,1], S = 2输出:4解释:如下面黑体所示,有 4 个满足题目要求的子数组:[1,0,1, 0,1][1,0,1,0,1][1,0,1,0,1][1,0,1,0,1]提示:A.length <= 300000 <= S <= A.lengt...原创 2019-04-06 11:51:05 · 153 阅读 · 0 评论 -
腾讯2017 秋招+暑期实习 笔试(编码;构造回文;字符移位;有趣的数字)
1 编码假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入...原创 2019-04-06 00:40:07 · 182 阅读 · 0 评论 -
剑指offer 二叉树的镜像
https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking操作给定的二叉树,将其变换为源二叉树的镜像。p...原创 2019-03-05 16:20:18 · 124 阅读 · 0 评论 -
剑指offer 树的子结构
https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&tqId=11170&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking输入两棵二叉树A,B,判断B是不是A的子结构。(p...原创 2019-03-05 15:50:38 · 103 阅读 · 0 评论 -
剑指offer 合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=13&amp;tqId=11169&amp;rp=1&amp;ru=%2Fta%2Fcoding-interviews&amp;qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking输入两个单调递增的链表,输出两...原创 2019-03-05 14:49:39 · 66 阅读 · 0 评论 -
回溯法欣赏(2)
题目https://leetcode.com/problems/generate-parentheses/leetcode:22. Generate Parentheses 生成括号对描述For example, given n = 3, a solution set is:[ "((()))", "(()())", "(())()", "原创 2018-12-19 16:29:11 · 141 阅读 · 0 评论 -
二叉树的遍历(前、中、后、层次)(递归、非递归)
前序遍历public class PreOrder { public ArrayList<TreeNode> list=new ArrayList<>(); public void recursive(TreeNode root){ if(root!=null){ list.add(root); ...原创 2018-11-26 09:59:58 · 106 阅读 · 0 评论 -
回溯法欣赏(1)
Leetcode 回溯法欣赏,助你发现其中套路(部分内容引自评论区)Subsets : https://leetcode.com/problems/subsets/题目:Input: nums = [1,2,3]Output:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]代码:public Li...原创 2018-11-07 21:14:25 · 192 阅读 · 0 评论 -
java 折半插入排序算法
参考https://www.cnblogs.com/snowcan/p/6244361.html基本思想:折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。与直接插入算...转载 2018-11-02 11:32:38 · 262 阅读 · 0 评论 -
java 在O(1)时间删除链表结点(剑指offer)
用O(1)的时间复杂度,删除结点public class DeleteNodeInOne { public static void main(String[] args) { ListNode node1=new ListNode(1); ListNode node2=new ListNode(2); ListNode node3=new...原创 2018-11-06 15:19:27 · 133 阅读 · 0 评论 -
单链表的归并排序
转自https://blog.csdn.net/u010853261/article/details/54884650Question: 148. Sort ListSort a linked list in O(n log n) time using constant space complexity.中文:使用恒定的空间复杂度排序一个链表,要求时间复杂度是O(nlogn)我们知道...转载 2018-11-06 09:34:25 · 1736 阅读 · 0 评论