C/C++
Steve_Stone
西电er,在读研究僧。
github:
https://github.com/yohstone
展开
-
【leetcode】第143题 重排链表 3种方法求解 C++
题目:重排链表给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, ...原创 2019-11-06 23:27:22 · 727 阅读 · 0 评论 -
【数据结构】查找:动态查找表(二叉排序树/BST/二叉搜索树,平衡二叉树/AVL)
#笔记整理动态查找表——基于树表的查找法动态查找表的特点:表结构本身在查找过程中动态生成,即对于给定值 key,若表中存在关键字等于 key 的记录,则查找成功,否则插入关键字等于 key 的记录。动态查找表的主要运算- 创建、销毁- 查找、插入和删除- 遍历二叉排序树(二叉搜素树、二叉查找树)BST (Binary Sort Tree)/(Binary Search Tree)...原创 2019-08-20 22:51:14 · 2916 阅读 · 0 评论 -
【数据结构】查找:基本概念及静态查找表(顺序查找、二分查找、索引查找)
#笔记整理查找查找的基本概念静态查找表——基于线性表的查找法动态查找表——基于树表的查找法哈希表——计算式查找法基本概念查找表由同一类型的数据元素(记录)构成的集合。查找的定义给定一个值 key,在含有 n 个记录的表中找出关键字等于 key 的记录。若找到,则查找成功,返回该记录的信息或该记录在表中的位置;否则查找失败,返回相关的指示信息。静态查找表(Static S...原创 2019-08-20 22:37:42 · 4374 阅读 · 0 评论 -
【leetcode】第142题 环形链表2(#142. Linked List Cycle II)详解(哈希表+快慢指针),C++
这题的题解中的快慢指针法的理解涉及到公式推导,将自己的理解先记下来,防止以后忘记。题目题解1题解1就是使用 set 作为哈希表,没啥难度。思路:使用哈希表的唯一性存下每个遍历过的结点,当再次遇到同一结点时该结点为入口直接返回分析: 时间复杂度 O(n),空间复杂度 O(n)实现:ListNode *detectCycle(ListNode *head) { set...原创 2019-08-02 18:59:46 · 233 阅读 · 0 评论 -
【数据结构】排序:归并排序(2路归并排序算法)详解,递归实现与迭代实现(C++)
#笔记整理内部排序分类目录:- 插入排序- 交换排序- 选择排序- 归并排序- 计数排序归并基本思路:是将两个或两个以上的有序表合并成一个新的有序表。2-路归并排序假设初始序列有 n 个记录,首先把它看成是 n 个长度为 1 的有序子序列 (归并项),先做两两归并,得到 n / 2 个长度为 2 的归并项 (如果 n 为奇数,则最后一个有序子序列的长度为1);再做两两归并,…...原创 2019-07-17 18:09:23 · 7373 阅读 · 0 评论 -
【数据结构】树:哈夫曼树(Huffman Tree,也称哈弗曼、赫夫曼树)、哈夫曼编码解析与实现(c++)
#笔记整理树的定义参照前文:二叉树、遍历二叉树与线索二叉树等树的定义与解析、二叉树遍历实现哈夫曼树(也称赫夫曼树)相关概念:① 路径长度从树中一个结点到另一个结点之间的分支(树枝)构成这两个结点之间的路径, 路径上的分支(树枝)数目称做路径长度。② 树的路径长度从树根到每一结点的路径长度之和(所有结点到根的路径长度的和)。③ 结点的权和带权路径长度给树的每个结点赋予一个具有某...原创 2019-07-19 12:47:23 · 917 阅读 · 0 评论 -
【数据结构】树:二叉树、遍历二叉树与线索二叉树等树的定义与解析、二叉树遍历实现(递归、迭代)C++
#笔记整理今天复习总结了一下数据结构中树相关的知识点。先记录一些主要的,慢慢补充。树(tree)树是n (n>=0)个结点的有限集。树是以分支关系定义的层次结构,是一类重要的非线性结构。特性:在任意一棵非空树中有且仅有一个特定的称为根(root)的结点;当 n>1n > 1n>1 时,其余结点可分为m(m>0)m(m&...原创 2019-07-12 20:52:55 · 358 阅读 · 0 评论 -
【数据结构】排序:选择排序(简单选择排序、堆排序等)详解与实现(C++)
#笔记整理选择排序基本思想:每一趟 (第 i 趟,i = 1, …, n-1) 在后面 n-i+1 个待排序记录中选出关键字最小的记录, 作为有序序列的第 i 个记录。简单选择排序(Simple Selection Sort)通过 n−in-in−i 次关键字间的比较,从 n−i+1n-i+1n−i+1 个记录中选取关键字最小的记录,并和第iii个记录交换。算法实现: // 简单选择排...原创 2019-07-14 22:47:45 · 1038 阅读 · 1 评论 -
【数据结构】排序:交换排序(冒泡排序、快速排序)详解与实现(C++)
#笔记整理交换排序交换排序就是基于“交换”规则进行排序的方法,其中包括:冒泡排序(Bubble Sort)、快速排序(Quick Sort)。冒泡排序(Bubble Sort)冒泡排序又称起泡排序,其过程很简单,两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止。算法实现: // 冒泡排序法,对容器或数组nums进行排序 void bubbleSort(vector&...原创 2019-07-14 22:36:27 · 3234 阅读 · 0 评论 -
【数据结构】排序:插入排序(直接插入排序、希尔排序、折半插入排序、2-路插入排序等)详解与实现(C++)
#笔记整理插入排序:(Insertion Sort)插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。共有5种插入排序方法:(1) 直接插入排序;(2) 折半插入排序;(3) 2-路插入排序;(4) 表插入排序;(5) 希尔排序。(1)直接插入排序(Straight Insertion Sort):一种...原创 2019-07-14 22:22:51 · 4751 阅读 · 0 评论 -
【数据结构】字符串 模式匹配算法的理解与实现 Brute Force算法(BF算法)与KMP算法 (C与C++分别实现)
串的模式匹配算法求子串位置的定位函数 Index(S, P, pos)求子串的定位操作通常称作串的模式匹配(其中子串P称为模式串)。算法1:朴素模式匹配算法/简单匹配算法(Brute-Force算法,简称BF算法)从目标主串s=“s1s2…sn”s=“s_1s_2…s_n”s=“s1s2…sn”的第一个字符开始和模式串p=“p1p2…pm”p=“p_1p_2…p_m”p=“p1p2...原创 2019-07-08 17:54:45 · 3878 阅读 · 0 评论 -
【leetcode】第6题 Z字形变换,详细题解, C++实现,#6. ZigZag Conversion
这几天因为状态不太好,在这题上花了比较多的时间,记录一下。因为题目很老了,Leetcode上关于此题的题解很多,然而很多题解解释得都不是很清楚,包括leetcode官方题解,题解中符号所表示的意思都不写明,无力吐槽,还是自己写一个当笔记吧。题目详情将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,...原创 2019-07-01 16:07:23 · 3425 阅读 · 1 评论 -
【leetcode】第69题 x 的平方根 牛顿迭代法实现求平方根函数 C++
这题属于简单题,但是因为学到了新的算法:牛顿迭代法(或牛顿法),这里做一下记录。题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被...原创 2019-06-15 00:34:03 · 8708 阅读 · 0 评论 -
C/C++ 各类型int、long、double、char、long long取值范围(基本类型的最大最小值)
做题的时候经常会使用到数据类型的最大最小值(如int, long, long long, char等),我也查了很多次,这次就记下来当笔记吧。参考了C++ prime plus、各个博客、教程和c++官网,对C/C++中各个类型int、long、double、char、long long等基本类型的取值范围即最大最小值总结如下:1字节 = 8位,“位”是计算机内存的基本单元注意:不同的操...原创 2019-04-08 12:16:50 · 12636 阅读 · 0 评论 -
【leetcode】第3题 无重复字符的最长子串(Longest Substring Without Repeating Characters)做题记录 C++实现
leetcode第3题#3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)今天把第三题做完了,各个方法都尝试了一下,思考与学习的时间有点长,说难也不难,其中有一些坑,趁还记着记录一下。题目描述题目里没有限定字符取值范围,根据做题结果来看,测试集数据中的字符范围是128个ASCII码,没有用到扩展ASCII码。关于解...原创 2019-04-04 00:49:10 · 2989 阅读 · 0 评论 -
网易笔试题-游戏积分(吃鸡游戏积分排行逻辑)
前段时间看到师兄做的网易游戏笔试题,感觉挺有意思的,就做了一下,做的时候发现自己以前学的都忘得差不多了。。因为以前做题基本都是用C语言来写,所以C语言还好,做的时候能回想起来,而C++感觉得重新学才行了。。哎,从今天开始做题吧,并重新开始学习C++和算法。这题就是写个吃鸡游戏的积分排行逻辑,我是基本是用C语言写的,测试用例算出的结果都对(输出排序没写),但还有可能存在错误,等复习完C++和算法...原创 2018-09-05 20:57:08 · 3367 阅读 · 0 评论