随笔分类 - 编程
摘要:Sort函数的使用 sort类函数: 函数名功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partial_sort_copy 对给定区间复制并排序 nth_element 找出给定区间的某
阅读全文
摘要:1356. 根据数字二进制下 1 的数目排序 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,
阅读全文
摘要:922. 按奇偶排序数组 II 给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。 你可以返回任何满足上述条件的数组作为答案。 示例: 输入:[4,2,5,7] 输出:[4,5,2,7
阅读全文
摘要:1403. 非递增顺序的最小子序列 给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。 如果存在多个解决方案,只需返回 长度最小 的子序列。如果仍然有多个解决方案,则返回 元素之和最大 的子序列。 与子数组不同的地方在于,「数组的子序列
阅读全文
摘要:349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 代码: #includ
阅读全文
摘要:1370. 上升下降字符串 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选
阅读全文
摘要:1502. 判断能否形成等差数列 给你一个数字数组 arr 。 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。 示例 1: 输入:arr = [3,5,1] 输出:true 解释:对
阅读全文
摘要:STL vector常见用法详解 1. vector的定义 vector<int> v1; //创建一个空的向量v1 vector<int> v2(10); //创建一个向量v2,其已开辟10个元素的空间,相当于int v[10]; vector<int> v3(10,5); //创建一个向量v3,
阅读全文
摘要:1528. 重新排列字符串 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 示例 1: 输入:s = "codeleet", indices = [4,5,6,
阅读全文
摘要:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。 示例: 输入:["MinStack","push","p
阅读全文
摘要:什么是优先队列? 优先队列也是一种队列,只不过不同的是,优先队列的出队顺序是按照优先级来的;在有些情况下,可能需要找到元素集合中的最小或者最大元素,可以利用优先队列ADT来完成操作,优先队列ADT是一种数据结构,它支持插入和删除最小值操作(返回并删除最小元素)或删除最大值操作(返回并删除最大元素);
阅读全文
摘要:一、线索二叉树的原理 通过考察各种二叉链表,不管儿叉树的形态如何,空链域的个数总是多过非空链域的个数。 n各结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。如下图所示。 (除根结点以外,所有结点都有一共指向它的结点,所有非空链域为n-1,空链域为n+1) 因此,提出了一
阅读全文
摘要:二叉树的遍历-链式存储 利用指针域我们便可以完美的存储非完全二叉树,如下: 结构体 struct TreeNode { TreeNode*left; TreeNode*right; char data; }; typedef TreeNode* BTree; 建树 BTree CreateBTree
阅读全文
摘要:二叉树存储结构 存储结构: ① 顺序存储结构 ② 链式存储结构 顺寻存储结构 结构体 typedef int DataType ; struct SeqBinTree{ int MAXNUM; int n; DataType *nodelist; }; typedef SeqBinTree* PSe
阅读全文
摘要:树的概念 之前介绍的所有的数据结构都是线性存储结构。本章所介绍的树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。 图 1(A) 是使用树结构存储的集合 {A,B,C,D,E,F,G,H,I,J,K,L,M} 的示意图。对于数据 A 来说,和数据 B、C、D 有关系;对于数据
阅读全文
摘要:KMP字符串匹配算法 算法流程 (1) 首先,主串"BBC ABCDAB ABCDABCDABDE"的第一个字符与模式串"ABCDABD"的第一个字符,进行比较。因为 B 与 A 不匹配,所以模式串后移一位。 (2) 因为 B 与 A 又不匹配,模式串再往后移。 (3) 就这样,直到主串有一个字符,
阅读全文
摘要:主串和子串 主串与子串:如果串 A(如 "shujujiegou")中包含有串 B(如 "ju"),则称串 A 为主串,串 B 为子串。主串与子串之间的关系可简单理解为一个串 "包含" 另一个串的关系。 实现串的模式匹配的算法主要有以下两种: 普通的模式匹配算法; 快速模式匹配算法; BF算法原理
阅读全文
摘要:字符串 1.1 字符串及其运算 1.2 字符串的存储表示 1.3 模式匹配 1.1 字符串及其运算 ⚫字符串:简称串,是特殊的线性表,其特殊性主要在于表 中的每个元素是一个字符,以及由此而要求的一些特殊操 作。 ⚫ 长度:一个串中包括的字符个数。长度为零的串称为空串。 ⚫ 子串:字符串s1中任意个连
阅读全文
摘要:求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n = 3 输出: 6 示例 2: 输入: n = 9 输出: 45 方法一:递归 思路和算法 试想一下如果不加限制地使用递归的方法来实
阅读全文
摘要:问题描述工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。玩了几轮之后,
阅读全文