
剑指基础
jing_nnn
这个作者很懒,什么都没留下…
展开
-
腾讯一面之二分法查找
给定数组,以及key,二分法查找key值在数组中的下标#include using namespace std;int BinarySearch(int myarray[], int n, int key){int low=0,high=n-1;int mid=0;while(low<=high){mid=(low+high)/2;if (myarray[mid]==ke...原创 2020-04-15 16:02:38 · 124 阅读 · 0 评论 -
剑指之 动态规划
传说中动态规划最容易出,所以先将剑指中的动态规划类题目总结连续子数组的最大和dp[i]表示以元素array[i]结尾的最大连续子数组和.以[-2,-3,4,-1,-2,1,5,-3]为例可以发现,dp[0] = -2dp[1] = -3dp[2] = 4dp[3] = 3以此类推,会发现dp[i] = max{dp[i-1]+array[i],array[i]}.public...原创 2020-04-02 09:44:40 · 134 阅读 · 0 评论 -
剑指之list链表合集
03–输入一个链表,按链表从尾到头的顺序返回一个ArrayList。算法思路:借用栈结构,将链表存入到栈中,再从栈中pop出来014–输入一个链表,输出该链表中倒数第k个结点。算法思路:设置两个指针,p1,p2,先让p2走k-1步,然后再一起走,直到p2为最后一个 时,p1即为倒数第k个节点015–输入一个链表,反转链表后,输出新链表的表头。算法思路:从头到尾修改指针的方向,然后输...原创 2020-04-01 15:30:35 · 137 阅读 · 0 评论 -
八大排序之快速排序
快速排序1. 理解快速排序的基本思想:挖坑填数+分治法从序列当中选择一个基准数(pivot)在这里我们选择序列当中第一个数最为基准数将序列当中的所有数依次遍历,比基准数大的位于其右侧,比基准数小的位于其左侧重复步骤1.2,直到所有子集当中只有一个元素为止。用伪代码描述如下:1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。2.j–由后向前找比它小的数,找到后挖出此...原创 2020-03-14 22:23:43 · 145 阅读 · 0 评论 -
八大排序之希尔排序
希尔排序1. 理解希尔排序的算法思想:将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序;每次将gap折半减小,循环上述操作;当gap=1时,利用直接插入,完成排序。同样的:从上面的描述中我们可以发现:希尔排序的总体实现应该由三个循环完成:第一层循环:将gap依次折半,对序列进行分组,直到gap=1第二、三层循环:也即直接插入排序所需要的两次循环。具体描...原创 2020-03-14 22:11:52 · 162 阅读 · 0 评论 -
八大排序之堆排序
从效率最高的 堆排序 / 快速排序/归并排序/基数排序开始记录。堆排序1. 堆的理解堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树中每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示:根据节点数值满足的条件,可以将分为最大堆和最小堆。最大堆的特性是:除了根节点以外的每个节点i,有A[...原创 2020-03-13 22:41:42 · 116 阅读 · 0 评论 -
存储容器之vector
https://blog.youkuaiyun.com/weixin_41743247/article/details/90635931原创 2020-03-10 11:21:31 · 139 阅读 · 0 评论