左神算法
文章平均质量分 60
左神算法yyds
willorn
希望这些文字能够帮助到大家,谢谢大家的支持
展开
-
面试场上默认必会的数据结构与算法
一、排序算法:归并class Solution{ // 递归方法实现 public static void mergeSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } process(arr, 0, arr.length - 1); } // 请把arr[L..R]排有序(分而治之的思想) // l...r N // T(N) = 2 * T(N / 2) + O(N) // O(原创 2021-09-17 10:34:37 · 160 阅读 · 0 评论 -
【数算】复习2
2021年9月14日会议室问题:贪心算法是几乎没有规律的一种算法,面试场合比较少见(无区分度)与之相反,dp问题比较常见,因为dp涉及到优化的问题,将复杂的重复计算问题优化为单次计算的。https://www.acwing.com/problem/content/description/2759/一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间 。你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。 返回最多的宣讲场次。public int原创 2021-09-14 10:14:15 · 195 阅读 · 0 评论 -
【数算】复习1
滑动窗口问题https://leetcode-cn.com/problems/sliding-window-maximum/public int[] maxSlidingWindow(int[] nums, int k) { if( nums == null || k<1 || k > nums.length ) return null; int len = nums.length; int[] window = new int[len - k原创 2021-09-13 11:37:03 · 188 阅读 · 0 评论 -
Java实现KMP代码
左神第12节课:基础提升:有序表、并查集KMP算法是由一个问题而引发的:对于一个字符串str(长度为N)和另一个字符串match(长度为M),如果match是str的子串,请返回其在str第一次出现时的首字母下标,若match不是str的子串则返回-1。public class KMP { public static void main(String[] args) { System.out.println(getIndexOf("abcacb", "cb"));原创 2021-09-02 17:40:56 · 202 阅读 · 0 评论 -
左神提升6:暴力递归改动态规划
内容讲述暴力递归和动态规划的关系 =》去重的过程记忆化搜索 傻缓存动态规划都可以由暴力递归改进过来,解决动态规划的套路常见的尝试模型设计尝试过程的原则本节是暴力递归到动态规划的总纲(很重要)后续的课都是在讲述这一系列的套路1、尝试=》 分辨出来所有的参数,找到所有的可变参数以及固定的值(边界)2、可变参数的组合是什么,表大小根据可变参数的变化范围来确定3、已知固定位置的依赖,有具体参数的例子(范围的两端)4、知道在表中的最终想要的位置,baseCase固定的行列(确定好baseCas原创 2021-09-06 15:12:34 · 434 阅读 · 0 评论 -
左神提升5:树型DP 问题
树型DP的套路从小树到大树,得到答案的可能性,得到infoprocess使用info进行信息传递baseCase使用null综合leftInfo、rightInfo加工左右信息(注意null的时候,什么时候存在)利用递归的思想来实现dp,dp有空间换时间...原创 2021-09-05 17:04:52 · 260 阅读 · 0 评论 -
左神提升5:Morris遍历
morris逻辑保证当前的cur里面有值: 现在的当前节点记为cur,如果cur无左孩子,则cur向右移动,cur=cur.right 如果cur有左孩子,则找到左子树上最右的节点,记为mostright 1)如果mostright的右指针指向空,则让其指向cur,此时cur向左移动,cur = cur.left 2)如果mostright的左指针指向空,则让其指向空,cur向右移动morris原型public static void morris(Node head){ if(hea原创 2021-09-05 11:19:22 · 217 阅读 · 0 评论 -
左神说:被火车撞了都不能忘记的算法
https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums == null || k < 1 || nums.length<k) return new int[]{}; int[] res = new int[nums.l原创 2021-09-04 14:41:58 · 218 阅读 · 0 评论 -
【左神】二叉树基础复习
二叉树的经典遍历【前序遍历】迭代法需要stack来保存临时节点,先右后左,因为是stackclass Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); postorder(root, list); return list; }原创 2021-08-25 13:55:41 · 238 阅读 · 0 评论 -
【数算-2】递归&哈希表&有序表
1. 各种排序方式:需要记忆常用的排序算法:选炮插,快归西堆统计鸡最重要的排序算法:插堆快归2. 递归行为:任何递归行为都可以变成非递归,改为迭代public int fun(a,b) { // 这是跳出fun函数递归的条件 if (a == b) { return xx; } int mid = xxx; int a = fun (a, mid); int b = fun (mid+1, b); return Math.max(a,b); }2.1 Ma原创 2021-06-21 18:51:16 · 289 阅读 · 0 评论 -
【数算-3】链表结构(实现栈和队列)
面试题目的最优解,确定最优解有区分度的题目 》 考的万无一失的题目;高频题目在痛苦就听下去,【面试】锻炼一种能力,絮絮叨叨的把想法想出来,完成思路的碰撞。从人性出发,絮絮叨叨弄出来,面试官:“我帮你一下”,絮絮叨叨又不要招人烦。牛逼啊,太牛逼了。链表结构:给定一个 Node 结构:public static class Node { public int value; public Node next; public Node(int data) { .原创 2021-06-21 18:49:33 · 205 阅读 · 0 评论 -
【数算-1】复杂度、对数器、二分法、排序算法
1. 复杂度复杂度我们一般考虑的是最坏情况我们对常数时间操作以及非常数时间操作的基本数量就是“Big O” 时间复杂度。常数时间操作:例如数组寻址 >>带符号右移,>>> 不带符号右移。非常数时间操作:还有一点:异或操作是无进位相加额外空间复杂度:与空间无关,是自己在操作的时候额外开辟的内存。常数项:一些细枝末节的问题,随机大样本可以去测试出来,直接跑!!!最优解是 时间复杂度、额外空间复杂度、常数项的总和评价,其中,时间复杂度是核心,也是最重要的!!!2.原创 2021-06-20 20:46:43 · 239 阅读 · 1 评论 -
【数算1.1】异或运算练习题目
题目一:不用额外的变量去使得两个数交换。a = a ^ b;b = a ^ b;a = a ^ b;题目二:一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数 public static void main(String[] args) { int[] b = {1, 8, 9, 3, 1, 8, 9, 3, 9, 6, 6}; System.out.println(findOddNum(b)); }原创 2021-06-20 19:43:07 · 582 阅读 · 1 评论