
0.算法
dsd
多学就会融会贯通
这个作者很懒,什么都没留下…
展开
-
你可给我坚持写算法题
你看看while()语法现在你都写成啥样了以前是这个样在while的条件语句里你要写上条件原创 2021-04-12 10:06:08 · 88 阅读 · 0 评论 -
树的基本面试题
前中后遍历 二叉树 (递归)不要想复杂 栈当中会帮助我们回溯 就顺序的递归就好了层序遍历 记得深拷贝 BFS模板List item原创 2020-10-27 19:36:11 · 282 阅读 · 0 评论 -
牛客笔试基本常识
对于传统ACM的OJ模式题目,程序需要stdin(标准输入)读取输入,然后stdout(标准输出)来打印结果,OJ一次处理多个case,所以代码需要循环处理,一般通过while循环来出来多个caseJava语言:注意类名必须为Main, 不要有任何package xxx信息,也要注意注意hasNext和hasNextLine的区别,打断的的幅度幅度是否nextInt() 返回到空格或者回车之前的数值 比如...原创 2020-10-21 10:59:56 · 909 阅读 · 0 评论 -
动态规划解题思考
一点思考 看不懂可以评论讨论一下思考问题的结果是什么 然后就设你的状态是什么意义并且根据状态确定转移方程其中状态数组的确定要注意长度 和 整体的初始值 以及0等边界的赋值进入双层for循环 或者单层的for循环 外层的循环从i=1开始了 因为0等边界已经在外边赋值过了因为动态规划的核心就是 你到当前的点就是一次选择 他还让你站在当前的选择去进行其他选择所以进入外层循环 之后 自己来处理 二维抉择是不用for循环就可以解决还是要借助 并且在二维抉择当中经常要有判断和防御最后返回的是状态的最后一原创 2020-06-29 21:25:28 · 263 阅读 · 0 评论 -
有病 为什么总记不住归并排序
下图可以清晰看出具体赋值的位置是随着指针变换而变换的public class Solution { /** * @param A: an integer array * @return: nothing */ public void sortIntegers2(int[] A) { // write your code here if(A==null||A.length<0) { .原创 2020-06-17 15:24:10 · 142 阅读 · 0 评论 -
数组基础面试题整理
合并两个排序数组经典的归并排序有两个指针left right mid 我们在【left,mid】【mid+1,end】两个区间里选谁小就让谁进入temp数组中但这道题的区别在于 不希望有额外空间复杂度 因为已经说明A的后面有大量空间可以用来安放B的元素区别2 由于没有额外空间而对A赋值会造成大量的数组元素移动 浪费时间应当想到剑指offer中的happy字符串代替 是提前计算好长度 从后边开始添加这样就不会造成移动带来的低效率...原创 2020-06-01 16:17:12 · 363 阅读 · 0 评论 -
链表
面试顺序:链表 树深度优先搜索 宽度优先搜索动态规划有头链表 (指向head的指针)删除链表中的重复结点 (涉及删除头结点)当头结点会变化时候用dummy Nodedummy Node.next来返回头结点 因为头结点可能会变化哨兵结点=C中指向头结点的指针 便于删除头结点单向链表也可以有pre单项链表删除也可以用while(cur!=null)代替cur.next!=nullListNode dummy=new ListNode(0);dummy.next=head;List原创 2020-06-01 14:47:50 · 341 阅读 · 0 评论 -
分治法
二叉树最大深度遍历游走–没有返回结果–有全局变量—需要两个函数 private int max;//全局变量在外 不给值 public int maxDepth(TreeNode root) { max=0; core(root,1); return max; } public void core(TreeNode r...原创 2020-05-04 12:29:43 · 230 阅读 · 0 评论 -
二分法
顺口溜:总共5个移 一个都不能少相交和相邻,start要+1mid不能当益查左end移 查右就start移 确定区间(通过开口来确定)while(內为手段)输出变正常按序移 确定在上面这个区间你要区间的那个边界(输出的时候如果是输出当前范围的左边界就从start)为你要求的二分法的重点不在于指针移动 在于/2 循环目标在于分/缩小区间 不在于在循环中找到答案 最后找到的最小区间...原创 2020-04-29 16:15:00 · 219 阅读 · 0 评论 -
最清晰的堆排序和系列问题
堆是一个数组堆是一个特殊的完全二叉树完全二叉树可以用数组来形成堆是一个特殊的 完全二叉树形式 的 数组数组是连续地址存储空间的完全二叉树如果按照从上到下 从左到右来排号也是一个连续存储地址的结构所以堆是一个完全二叉树 在此基础上这个完全二叉树有条件父结点要比子节点大 叫做大根堆父节点比子节点小 叫小根堆堆==顺序存储结构的完全二叉树+父子关系调整完全二叉树完全二叉树的形式...原创 2020-04-27 18:43:25 · 257 阅读 · 0 评论 -
BFS模板
思想:start 进入BFS的起始target 目标queue< > 这个泛型注意在给的是矩阵的时候可以写个类 来代替 例PointSet<> 承装访问过的结点size 每一层的队列长度 动态 指定了一层的数据step 最短的步数分析问题:一般求最短路径 使用BFS 返回的这个最短路径都是step因为while循环一次step...原创 2020-04-22 00:33:05 · 2494 阅读 · 0 评论 -
矩阵K次幂(fibonacci)
@[TOC](Fibanacci 的复杂度O(logn)方式)快速幂[快速幂运算方式](https://blog.youkuaiyun.com/flyfish1986/article/details/48014523)根据上面的链接在求幂的时候 暴力算法是不停的乘本身A 需要很多次的调用自己本身 乘很多次 时间复杂度高但是所采用“分治法”将1.多次幂运算乘以自己这个大问题分成若干的小问题2.然...原创 2020-03-31 21:51:51 · 6786 阅读 · 0 评论