
算法刷题
一些常见的算法
隔壁的NLP小哥
积跬步,至千里
展开
-
数据结构与算法——排序算法(二)
数据结构与算法——排序算法(二)1、归并排序1.1 基本思想归并排序是利用分治的策略,将原始的数组分解成小的数组然后进行递归排序的过程。该策略主要包括两个部分,第一个部分是分 , 第二个部分是治。分就是将原始的数组分解成若干个小的数组,治就是将小的的数组合并成有序的过程。类似于下图所示:根据上图所示,我首先经历的是一个分的过程,我们数据分解成单个元素构成的数组的时候,此时数组中的元素就是...原创 2020-02-21 17:07:27 · 158 阅读 · 0 评论 -
数据结构与算法——排序算法(一)
数据结构与算法——排序算法1 、冒泡排序1.1 基本思想冒泡排序的核心在于**第i次排序将将第i大的元素放置到对应的位置。**也就是说,第一次将最大的元素放置到最后的位置,第二次将第二大的元素放置到倒数第二个位置。依次类推,最后一趟是将第二小的元素放置到对应得位置。可以确定对于常规的数组,数组长度为size,那么也就需要迭代size-1趟。那么,如何将对应的元素放到对应的位置呢?这里也就是...原创 2020-02-21 10:46:02 · 202 阅读 · 0 评论 -
LeetCode刷题——链表相关(一)
LeetCode刷题——链表相关2、链表逆序2.1 题目描述已知链表头结点指针head,将链表逆序,要求不能申请额外的空间。2.2 实现思想依次遍历链表中的每一个节点,每遍历一个节点就逆序一个节点。具体流程如下:首先,定义一个指针(无需申请内存),指向链表的头结点。第一轮...原创 2020-02-09 18:28:55 · 541 阅读 · 0 评论 -
剑指Offer——数学问题
剑指Offer——数学问题1、第7题 斐波那契数列题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解题思路:这道题的思路就不多介绍了,我们这里给出递归和非递归的实现方式。代码实现:递归方式(这里在牛客网上会超时)#include<iostream>using namespace std;...原创 2020-04-06 23:28:55 · 634 阅读 · 0 评论 -
剑指Offer——字符串相关
剑指Offer——字符串相关1、第二题 替换空格题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。基本思路:首先,统计整个字符串的长度和空格的个数,在原有的基础上增加空格个数*2来放置“20”,获取到新的长度之后,从后向前遍历,依次放置新的元素。代码实现:class ...原创 2020-04-06 18:52:57 · 172 阅读 · 0 评论 -
剑指Offer——数组相关
剑指Offer——数组相关1、第1题 二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:本题我们需要着重的考虑数组的结构,需要关注到的是数组无论是从行还是从列的角度,都是一个单调递增的过程。我们将这个二维数组看成...原创 2020-04-01 17:52:40 · 180 阅读 · 0 评论 -
剑指Offer——链表问题
剑指Offer——链表问题1、第3题 从尾到头打印链表题目描述:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。基本思路:1、链表原地翻转。2、翻转之后进行遍历代码实现:class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vec...原创 2020-03-31 12:37:45 · 170 阅读 · 0 评论 -
剑指Offer——二叉树部分
剑指Offer——二叉树部分一、二叉树的构建相关1.1、第4题、重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。基本思路:对于一个二叉树而言,我们关注遍历过程中根节点的位置,对于前...原创 2020-03-31 00:49:49 · 235 阅读 · 0 评论