
算法基础
文章平均质量分 85
Crownt
bug
展开
-
算法基础笔记_时间复杂度
大O的理解:n表示数据规模 O(f(n)) 表示运行算法所需要执行的指令数(运行时间),和f(n)成正比 O(f(n)) 可以理解为: t = a*f(n) + b = f(n) 简单验证程序算法复杂度的方法:将数据规模依次成倍增长,查看运行时间的增长规律,或作出 t-n 的坐标图观察。 “均摊复杂度” 和 “复杂度震荡”二分查找法 O(logn) ...原创 2018-10-25 10:29:31 · 228 阅读 · 0 评论 -
算法题目 搜索
目录BFSDFS动态规划排列问题组合问题BFSDFS动态规划Backtracking(回溯)属于 DFS。普通 DFS 主要用在 可达性问题 ,这种问题只需要执行到特点的位置然后返回即可。Backtracking 主要用于求解 排列组合 问题,例如有 { ‘a’,‘b’,‘c’ } 三个字符,求解所有由这三个字符排列得到的字符串,这种问题在执行到特定的位置返回之后还会继续执行求...原创 2019-09-24 00:19:05 · 670 阅读 · 0 评论 -
算法题目总结
动态规划剑指offer7. 斐波那契数列public class Solution { public int Fibonacci(int n) { if(n == 0){ return 0; } if(n==1){ return 1; } ...原创 2019-09-23 00:15:51 · 320 阅读 · 0 评论 -
算法题目 字符串操作
目录循环移位两个字符串包含的字符是否相同计算一组字符集合可以组成的回文字符串的最大长度同构字符串一个字符串中连续回文子字符串的个数判断一个整数是否是回文数统计二进制字符串中连续 1 和连续 0 数量相同的连续子字符串个数循环移位循环移位可以通过部分翻转然后整体翻转来完成字符串循环移位包含给定两个字符串 s1 和 s2,要求判定 s2 是否能够被 s1 做循环移位得到的字符串包含。s1...原创 2019-09-04 16:49:06 · 1040 阅读 · 0 评论 -
算法题目 二分查找
目录寻找正确插入的位置正常实现Input : [1,2,3,4,5];key : 3return the index : 2public int binarySearch(int[] nums, int key) { int l = 0, h = nums.length - 1; while (l <= h) { int m = l + (h -...原创 2019-09-04 10:07:47 · 3178 阅读 · 0 评论 -
算法题目 动态规划
目录子序列问题和最大的连续子序列最长递增子序列一组整数对能构成的最长链最长摆动子序列等差递增连续子序列的个数最长公共子序列子序列问题和最大的连续子序列53 最大子序和(简单)给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,...原创 2019-09-02 18:22:56 · 699 阅读 · 0 评论 -
算法题目 股票交易系列
目录只能进行一次的股票交易可以进行无限次的股票交易只能进行两次的股票交易可以进行K次的股票交易需要冷冻期的股票交易需要交易费用的股票交易只能进行一次的股票交易leetcode 121 买卖股票的最佳时机(简单)给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票...原创 2019-08-31 19:54:26 · 3023 阅读 · 0 评论 -
数据结构笔记_最小生成树
一. 有权图边上的权值不一定是数值,而可以是各种类型有权图的邻接矩阵和邻接表 抽象出一个Edge类,存放边的信息//Edge类, 表示边的信息public class Edge<Weight extends Number & Comparable> implements Comparable<Edge> { private int a,...原创 2018-11-30 23:32:07 · 406 阅读 · 0 评论 -
算法基础笔记_图
一. 图的认识1. 图的分类:按照方向性:无向图(Undirected Graph):边是没有方向的 有向图((Directed Graph):边具有方向性,有向图的不对称性会催生出一些比较复杂的算法按照权重性:无权图(Unweighted Graph) 有权图(Weighted Graph)2.图的连通性:在一张图中,并不一定所有的节点都是连通的。3.简单图...原创 2018-11-29 11:44:11 · 327 阅读 · 0 评论 -
leetcode笔记_优先队列经典问题(N中选出前M)
一个关于优先队列的经典问题在N个元素中选出前M个元素(N远大于M时)思路一:对N的元素进行排序,然后选出前M个元素,时间复杂度为O(NlogN)(采用快排或归并排序等高级排序算法) 思路二:使用优先队列,可以将时间复杂度降低为O(NlogM)。具体实现:使用优先队列维护M个元素,即每次向优先队列中加入一个元素时,需要将当前队列中的最小元素替换出去,保证队列中的M个元素是当前遍历过的元素中...原创 2018-11-18 16:49:15 · 1165 阅读 · 0 评论 -
算法基础_堆和堆排序
一. 堆的引出 普通队列:先进先出,后进后出。优先队列:出队顺序和入队顺序无关,而和优先级有关,优先队列主要用于处理“动态的”(任务数目不断变化)请求任务。 另一个场景:在N个元素中选出前M个元素,若通过排序进行选取,时间复杂度为O(nlogn),而使用优先队列的话可以降低为O(nlogm).(构建一个容量为M的最小堆来实现)优先队列的主要操作:...原创 2018-11-08 19:53:38 · 328 阅读 · 0 评论 -
算法基础_排序算法
一.O(n^2)的排序算法O(n^2)的排序算法基础 编码简单,易于实现,是一些简单情景的首选 在一些特殊情况下,简单的排序算法更有效 简单的排序算法思想衍生出复杂的排序算法 作为子过程,改进更复杂的排序算法1. 选择排序 时间复杂度为O(n^2),空间复杂度O(1)//选择排序算法,时间复杂度为O(n^2),空间复杂度为O(1). public int[...原创 2018-11-04 16:47:44 · 223 阅读 · 0 评论 -
二叉树的递归及非递归遍历
前序遍历 // 递归前序 private static void pre(TreeNode root){ if(root == null){ return; } System.out.println(root.val); pre(root.left); pre(root.righ...原创 2019-10-05 20:36:09 · 385 阅读 · 0 评论