
算法
unknown-null
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基础排序算法总结
冒泡排序AC 选择排序AC 插入排序AC 归并排序AC 快速排序AC 堆排序AC 希尔排序(略) 冒泡排序AC package basicSort; //nowcoder pass public class BubbleSort { public int[] bubbleSort(int[] a, int n) { for (int i = 0; i < n - 1; i++) {//要进行n-1次 boolean finish =原创 2022-04-15 10:49:13 · 550 阅读 · 0 评论 -
动态规划总结
最长递增子序列AC 最长公共子序列AC 最长公共子串AC 最小编辑代价AC 最长公共子序列和最长公共子串的区别 1.递推公式求解dp 子序列: s1[i-1]==s2[j-1]dp[i][j]=dp[i-1][j-1]+1 s1[i-1]!=s2[j-1]dp[i][j]=max(dp[i-1][j],dp[i][j-1]) 子串: s1[i-1]==s2[j-1]dp[i][j]=dp[i-1][j-1]+1 s1[i-1]!=s2[j-1]dp[i][j]=0...原创 2022-04-15 10:40:42 · 690 阅读 · 0 评论 -
链表算法总结
从尾到头打印链表AC 链表的倒数第K个节点AC 反转链表AC 合并递增链表AC 复杂链表复制AC 链表的第一个公共节点AC 二叉搜索树转为双向链表AC 判断链表是否有环AC 链表的入环节点AC 1.从尾到头打印链表AC 《剑指offer》题目4 package linkedlist; import java.util.ArrayList; /** * 题目描述: * 输入一个链表,从尾到头打印链表每个节点的值。 * 思路: * 联想到二叉树的递归遍历(先序,中序,后序), * 很明显的思路是想到原创 2022-04-15 10:22:55 · 395 阅读 · 0 评论 -
二分查找总结
public class BinarySearch { public int binarySearch(int[] arr, int key) { if (arr == null) { return -1; } int low = 0; int high = arr.length - 1; while (low<= high) { int mid = (low + high) / 2; if (arr[mid] == key) { re.原创 2022-04-15 10:13:58 · 415 阅读 · 0 评论 -
二叉树算法总结
二叉树的递归遍历(先序,中序,后序)AC 二叉树的非递归遍历(先序,中序,后序)AC 二叉树的层次遍历AC 二叉树的之字形遍历AC 二叉树的先序遍历、中序遍历重建二叉树AC 二叉树中和为某一值的路径(路径问题)AC 求二叉树的深度AC 求二叉树的镜像AC 求二叉树的最低公共祖先AC 判断二叉树是否为二叉树的子结构AC 判断二叉树是否为平衡二叉树AC 判断二叉树是否为对称二叉树AC 序列化二叉树AC 二叉搜索树转为双向链表AC 二叉搜索树的第k个节点AC 判断是否为二叉搜索树的后序遍历序列AC 二叉树的递归遍原创 2022-04-15 09:20:07 · 794 阅读 · 0 评论 -
【牛客BAT算法】9.动态规划
什么是动态规划方法? 1.其本质是利用申请的空间来记录每一个暴力搜索的计算结果,下次要用结果的时候直接使用,而不再进行重复的递归过程 2.动态规划规定每一种递归状态的计算顺序,依次进行计算 动态规划方法的关键点: 1.最优化原理,也就是最优子结构性质。 指的是一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。 简单说就是一个最优化策略的子策略总是最优的,如果一个问题满足最优化原理,就称其具有最优子结构性质。 2.无后效性。指的原创 2022-04-15 09:10:10 · 353 阅读 · 0 评论 -
【LeetCode】P029_DivideTwoIntegers
【题目】Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.题目的意思就是:不使用*、/、%运算符进行除法运算【思路】这道题最直接的想法,就是被除数每次减去除数,计算减了多少次,即为所求。但是这个办法的效率太低,试想被除数是Integ原创 2015-09-07 11:01:11 · 363 阅读 · 0 评论 -
【牛客BAT算法】1.排序
时间复杂度: O(N^2):冒泡排序,选择排序,插入排序 O(N*logN):归并排序,快速排序,堆排序,希尔排序 桶排序:不是基于比较的排序 计数排序:O(N) 基数排序: 空间复杂度: O(1):插入,选择,冒泡,堆排,希尔 O(logN)~O(N):快排 O(N):归并 O(M):计数排序,基数排序, M为桶的数量 稳定性: 稳定的排序算法: 冒泡,插入,归并,计数排序,基数排序,桶排序 不稳定的排序算法: 选择,快排,希尔,堆排 补充说明一:排...原创 2020-12-03 18:01:26 · 224 阅读 · 0 评论 -
【牛客BAT算法】2.字符串
字符串面试题的特点 1.广泛性 a. 字符串可以看做是字符类型的数组,与数组排序、查找、调整有关 b.很多其他类型的面试题可以看做是字符串类型的面试题 (看似与字符串无关,深度剖析后可用字符串进行处理) Java中可使用StringBuffer,StringBuilder和toCharArray方法 2.需掌握的概念 1)回文 2)子串(连续) 3)子序列(不连续) 4)前缀树(Trie树) 5)后缀树和后缀数组 6)匹配 7)字典序 3.需掌握的操作 1)与数组有关的操.原创 2020-12-03 18:21:53 · 581 阅读 · 0 评论 -
【牛客BAT算法】3.队列和栈
基础知识 栈的基本操作:pop,top或peek,push,size 队列的基本操作: 栈,队列,双端队列,优先级队列 优先级队列为根据元素的优先级值,决定元素的弹出顺序。 优先级队列的结构为堆结构,并不是线性结构。 深度优先遍历(DFS)和宽度优先遍历(BFS) 深度优先遍历:栈或递归 宽度优先遍历:队列 案例一:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作getMin 要求: 1.pop,push,getMin的时间复杂度都为O(1)...原创 2020-12-03 18:31:08 · 220 阅读 · 0 评论 -
【牛客BAT算法】4.链表
目录 基础知识 案例一:有序环形链表的插入 案例二:删除给定节点值 案例三:给定num,将链表分为小于num、等于num、大于num三部分 案例四:两个有序链表的公共部分 案例五:给定一个单链表的头结点head,实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不做调整。 案例六:删除链表中值为val的节点 案例七:判断一个链表是否为回文结构。 案例八:复杂链表的复制 案例九:判断一个单链表是否有环,及环的入口点 案例十:判断两个无环单链表是否相交 案例十原创 2020-12-03 18:53:55 · 292 阅读 · 1 评论 -
【牛客BAT算法】5.二分搜索
目录 二分搜索常见的应用场景 二分搜索常见题目的变化 案例一:给定无序数组arr,已知任意相邻的两个元素,值都不重复,请返回一个局部最小的位置。 案例二:出现的最左的位置 案例三:有序循环数组寻找最小值 案例四:给定一个有序整型数组arr,其中不含有重复元素,请找到满足arr[i]=i条件的最左的位置。如果所有位置上的树都不满足条件,返回-1。 案例五:给定一棵完全二叉树的头结点head,返回这棵树的节点个数。如果完全二叉树的节点数为N,实现时间复杂度低于O(N)的算法。 案例六:整数K的N原创 2020-12-03 19:02:15 · 152 阅读 · 0 评论 -
【牛客BAT算法】6.二叉树
目录 二叉树类型的题目为常考题型 案例一:用递归方式和非递归式实现二叉树的先序、中序和后序的遍历打印。 先序遍历: 中序遍历: 后序遍历: 案例二:给定二叉树的头结点head,要求按照以下格式打印 案例三:二叉树的序列化与反序列化 案例四:判断一棵树是否为平衡二叉树 案例五:判断一棵树是否是搜索二叉树 案例六:判断一棵树是否是完全二叉树 案例七:求二叉树节点的后继节点 案例八:折纸对折N次,从上到下打印所用折痕的方向 案例九:找出搜索二叉树中的错误节点 案例十:节点间的最大距离原创 2020-12-04 11:54:23 · 497 阅读 · 0 评论 -
【牛客BAT算法】7.位运算
目录 基础知识 案例一: 布隆过滤器 案例二:不用任何额外变量交换a和b的值 案例三:给定两个32位整数a和b,返回a和b中较大的。不能用任何比较运算。 案例四:给定一个整型数组arr,其中只有一个数出现了奇数次,其他的都出现了偶数次,请打印这个数。 案例五:给定一个整型数组arr,其中两个数出现了奇数次,其他的都出现了偶数次,请打印这两个数。 案例六:设计加密过程,完成对text的加密和解密 基础知识 位运算的操作符 & | ^ ~ << >...原创 2020-12-04 12:01:20 · 320 阅读 · 0 评论 -
【牛客BAT算法】8.大数据
目录 海量数据的常见处理技巧 案例一:请对10亿个IPV4的ip地址进行排序,每个ip只会出现一次 案例二:请对10亿人的年龄进行排序 案例三:有一个包含20亿个全是32位整数的大文件,在其中找出出现次数最多的数,但是内存限制只有2G 案例四:找出没有出现过的数字 案例五:海量数据TopN问题 案例六:一致性哈希 海量数据的常见处理技巧 常见海量数据处理题目解题关键 1.分而治之,通过哈希函数将大任务分流到机器,或分流成小文件 2.常用hashMap或bitmap 3.难点:通讯,时原创 2020-12-04 12:14:42 · 383 阅读 · 0 评论 -
样本问题
#include /* 问题描述: 有10箱产品,每箱有1000件,正品每件100克。 其中有几箱是次品,每件次品比正品轻10克。 问能否用称只称一次,就能找出哪几箱是次品。 */ int main() { int i,n; int w1,w,t; printf("input the number of boxes:"); scanf("%d",&n); t原创 2012-12-26 10:40:44 · 1309 阅读 · 0 评论 -
马的遍历问题
#include /* 问题描述:在n*m的棋盘上,马只能走日字。马从(x,y)出发,把棋盘的每一个点都走一遍,且只走一次, 找出所有路径。 */ void find(int x,int y,int dep); int check(int x,int y); void output(); int n=5,m=4; int fx[8]={1,2,2,1,-1,-2,-2,-原创 2020-12-08 11:42:58 · 5600 阅读 · 0 评论