![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
追光者2020
没有实力的愤怒毫无意义。
展开
-
剑指 Offer 30. 包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0原创 2021-08-15 16:26:32 · 115 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“appendTail原创 2021-08-08 21:50:15 · 53 阅读 · 0 评论 -
leetcode 41. 缺失的第一个正数
题目描述给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1基本思想是:将数与下标对应起来,将该数字放置到其应该放置的下标的位置。题目要求的是最小的正整数,因此负数和0均不需要考虑,当数字在0到n之间的话,且该数字不在对应的原创 2021-07-27 16:12:09 · 71 阅读 · 0 评论 -
剑指offer 68 Ⅰ二叉搜索树的最近公共祖先
题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节原创 2021-06-05 10:07:08 · 57 阅读 · 0 评论 -
平衡二叉树
输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。注意:规定空树也是一棵平衡二叉树。在求解二叉树深度的过程中判断二叉树的高度是否大于1,如果大于1,标志位设置为false。class Solution {public: bool flag=true; bool isBalanced(TreeNode* root) { dfs(root); return flag;原创 2021-05-31 10:40:48 · 65 阅读 · 0 评论 -
不用加减乘除做加法(位运算)
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。样例输入:num1 = 1 , num2 = 2输出:3全加器,先求解不进位的和,之后求解进位。比如5+6 不进位和为011,啥时候进位:两个数都是1的时候进位,且进位要向左移动一位,进位和为100,向左移动一位得到1000,将进位和与不进位和相加即可得到最终的和,此时进位和与非进位和是不是又可以转化为上述过程,直到没有进位停止循环。class Solution {public: int add(原创 2021-05-29 09:35:22 · 96 阅读 · 0 评论 -
构造乘积数组(前后缀分解)
题目描述给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素B[i]=A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。样例输入:[1, 2, 3, 4, 5]输出:[120, 60, 40, 30, 24]思考题:能不能只使用常数空间?(除了输出的数组之外)本题目是乘积数组除了本身的数字以外所有数字的乘积,可以将数组以当前数字为划分点,前面的数组为一部分,后面的数组为另一部分,两部分做乘积即可。cla原创 2021-05-29 09:10:43 · 148 阅读 · 0 评论 -
字符串中第一个只出现一次的字符
题目描述在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出b。如果字符串中不存在只出现一次的字符,返回 # 字符。样例:输入:“abaccdeff”输出:‘b’该题与字符流中第一个只出现一次的字符串是不一样的,本题目字符串是提前确定好的,而链接中的题目字符串是不确定的。使用hash遍历字符串中的数字,然后取第一个个数等于1的字符返回。class Solution {public: char firstNotRepeatingChar(string s) {原创 2021-05-27 20:57:59 · 275 阅读 · 0 评论 -
扑克牌的顺子(模拟)
题目描述从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。2∼10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,大小王可以看做任意数字。为了方便,大小王均以 0 来表示,并且假设这副牌中大小王均有两张。样例1输入:[8,9,10,11,12]输出:true样例2输入:[0,8,9,11,12]输出:trueclass Solution {public: bool isContinuous( vector<int> numb原创 2021-05-27 20:30:37 · 90 阅读 · 0 评论 -
链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第 k 个结点。注意:k >= 1;如果 k 大于链表长度,则返回 NULL;样例输入:链表:1->2->3->4->5 ,k=2输出:4使用快慢指针,快指针先走k步,然后慢指针与快指针一起走,直到快指针走到链表结尾,此时慢指针指向的位置为倒数k个节点。一些特殊情况,如果链表为空,那么返回nullptr,如果k的值大于链表的长度返回也是nullptr/** * Definition for singly-linked l原创 2021-05-27 20:21:36 · 78 阅读 · 0 评论 -
在O(1)时间删除链表结点
题目描述给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。假设链表一定存在,并且该节点一定不是尾节点。样例输入:链表 1->4->6->8删掉节点:第2个节点即6(头节点为第0个节点)输出:新链表 1->4->8本题目没有告知节点的上一个节点是啥,因此取巧的办法是将下一个节点的值赋值到该节点,并且将下一个节点删除,依次来间接地完成对本节点的删除操作。/** * Definition for singly-linked list. * stru原创 2021-05-27 10:22:26 · 81 阅读 · 0 评论 -
leetcode 460. LFU 缓存
题目描述请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。实现 LFUCache 类:LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键存在于缓存中,则获取键的值,否则返回 -1。void put(int key, int value) - 如果键已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量时,则应该在插入新项之前,使最不经常使用的项无效。在此问题中,当存在平局(即两个或更多个键原创 2021-05-23 20:50:24 · 115 阅读 · 0 评论 -
LeetCode 146 LRU缓存机制
题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前原创 2021-05-23 17:34:26 · 98 阅读 · 0 评论 -
leetcode 8. 字符串转换整数 (atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“123”原创 2021-05-17 11:19:05 · 191 阅读 · 0 评论 -
剑指 Offer 60. n个骰子的点数(DP)
题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]题意:掷n个骰子,每个骰子六个数字,意思是同时投这些骰子,这些骰子朝上的和出现的概率。题解:动态规划f[i][j]表示使用 i 个骰子得到的和为j 。该f[原创 2021-05-16 16:28:33 · 81 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题解:动态规划,定义dp[ i ]表示以nums[ i ] 结尾的数组的最大和。dp[ i ] 可以由两部分组成,一部分是dp[i-1] +nums[i] 另一部分是 nums[i] ,因为加上前面的dp[i-1] 还不如不加。原创 2021-05-14 21:27:02 · 74 阅读 · 0 评论 -
剑指 Offer 19. 正则表达式匹配
题目描述请实现一个函数用来匹配包含’. ‘和’ * ‘的正则表达式。模式中的字符’.’ 表示任意一个字符,而’ * '表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”p = “a*”输出: true原创 2021-05-14 20:17:50 · 92 阅读 · 0 评论 -
剑指 Offer 20. 表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字一个点 ‘.’ ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’原创 2021-05-14 14:40:56 · 57 阅读 · 0 评论 -
剑指 Offer 16. 数值的整数次方(快速幂)
题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25题解:用long long 原因:样例如下:有可能abs(n)之后会爆int(-2147原创 2021-05-14 11:05:19 · 55 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
题目描述求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。三种方法:递归方法:n==0?0:n+sumNums(n-1);用到了条件语句,因此不符合题目要求,或者另一种版本的递归用到了if 语句也不符合条件。for 循环 不符合等差数列公式 用到了乘法也不符合可以使用的符号有加法,减法,位运算以及逻辑运算。递归函数的改编需要使用到出口条件,递归出口也就是只满足这一个条件递归结束,可以使用逻辑运算的方法原创 2021-05-14 10:40:02 · 60 阅读 · 0 评论 -
剑指 Offer 28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false对称的话,对于左右子树其左子树的左儿子和右子树的右儿子值相等右子树的左儿子和左子树的右儿子值相等如果节点值相等的话,就去看其儿子节点,如果不相等直接返回false。当然二者若都是空也返回true。class Solution原创 2021-05-10 21:21:44 · 61 阅读 · 0 评论 -
剑指offer27 二叉树的镜像
题目描述https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/迭代版本class Solution {public: TreeNode* mirrorTree(TreeNode* pRoot) { queue<TreeNode*> q; if(pRoot) q.push(pRoot); while(q.size()) {原创 2021-05-07 11:35:31 · 70 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解:定义两个指针分别为pre和cur,两个指针一次向下遍历,初始pre指向为nullptr,因为翻转后头结点会变成尾节点,链表结束是以nullptr结束的,因此pre为nullptr,cur指向head,反转链表后cur的下一个位置便是pre,由于在赋值时会把原创 2021-05-03 10:42:24 · 115 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列
题目描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof解题思路:回溯回溯的一般模板是使用深度优先遍历来做回溯。当前其中涉及到剪枝问题等优化问题。有时候优化只需要几行代码。本题思路:使用bool数组来存原创 2021-04-21 21:35:16 · 45 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
题目描述统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof这道题是二分模板的典型应用。二分模板有两种,第一类是找第一个大于等于给定数的第一个位置(满足某个条原创 2021-04-21 21:07:02 · 69 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。解题思路:双指针定义头尾指针,其中头指针一直向右移动,直到指的是偶数停止移动,尾指针一直向左移动,直到指的是奇数停止移动,此时如果 i 满足小于 j 就需要将 i 指向的偶数交换到 j 指向的奇数的位置,可以理解为将 j 指向的奇数交换到数组的前面。原创 2021-04-21 20:35:06 · 80 阅读 · 0 评论 -
day50:66. 两个链表的第一个公共结点(技巧题)
问题描述:输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空节点。样例:不同部分为a, 和b,公共部分为c;a + c + b = b + c + a;让两个一起走,a走到头就转向b, b走到头转向a,则在公共部分相遇。参考链接class Solution {public: ListNode *findFirstCommonNode(ListNode *headA, ListNode *headB) { auto p=headA,q=headB;原创 2020-07-15 10:09:13 · 163 阅读 · 0 评论 -
day49:79. 滑动窗口的最大值(队列)
问题描述:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组[2, 3, 4, 2, 6, 2, 5, 1]及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为[4, 4, 6, 6, 6, 5]。注意:数据保证k大于0,且k小于等于数组长度。样例输入:[2, 3, 4, 2, 6, 2, 5, 1] , k=3输出: [4, 4, 6, 6, 6, 5]维护一个单调队列,该队列单调递减,原本的窗口长度为k,当一个新的元素加进来的时候,需要删除队首原创 2020-07-14 10:07:18 · 134 阅读 · 0 评论 -
day48:54. 二叉搜索树的第k大节点(递归)
问题描述:给定一棵二叉搜索树,请找出其中第k大的节点。使用递归,这里是求解第k大的节点 所以可以将中序遍历倒过来进行,中序遍历先遍历左子树,根节点,右子树,现在先遍历右子树,根节点,左子树,这样就可以倒着找第k大的节点。如果找到该节点立马返回,不用再遍历左子树了,节省时间。class Solution {public: int ans; int kthLargest(TreeNode* root, int k) { dfs(root,k); retur原创 2020-07-13 10:46:38 · 209 阅读 · 0 评论 -
day47:78. 左旋转字符串
问题描述:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab"。注意:数据保证n小于等于输入字符串的长度。样例输入:“abcdefg” , n=2输出:“cdefgab”思路要灵活,一般的想法是将旋转部分找出来进行拼接,这样回导致时间与空间的占用。现在先将字符串整体转置,之后从转置位置开始分别转置。这样就得到了最终的结果。class Sol原创 2020-07-12 23:31:59 · 117 阅读 · 0 评论 -
字符流中第一个只出现一次的字符(单调队列,双指针)
问题描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是’g’。当从该字符流中读出前六个字符”google”时,第一个只出现一次的字符是’l’。如果当前字符流没有存在出现一次的字符,返回#字符。样例输入:“google”输出:“ggg#ll”解释:每当字符流读入一个字符,就进行一次判断并输出当前的第一个只出现一次的字符。巧妙地使用了队列,遇到第一个字母加入队列,下一个字母与队列的队首元素比较,如果相等,那么该队列队首原创 2020-07-11 19:44:54 · 199 阅读 · 0 评论 -
day45: 二叉树的序列化与反序列化(两个递归)
问题描述:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/serialize-and-deseri原创 2020-07-10 19:51:11 · 182 阅读 · 0 评论 -
day45:从1到n整数中1出现的次数(找规律)
问题描述:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含“1”的数字有1,10,11和12,其中“1”一共出现了5次。样例输入: 12输出: 5参考链接class Solution {public: int numberOf1Between1AndN_Solution(int n) { if(!n) return 0; vector<int> number; whil原创 2020-07-10 18:43:06 · 149 阅读 · 0 评论 -
day44:丑数(归并排序思想)
问题描述:我们把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。求第n个丑数的值。样例输入:5输出:5注意:习惯上我们把1当做第一个丑数。结合使用归并排序的思想,归并排序是将两个有序数列进行排序,分别选取两个序列中最小的一个放置到结果数组中。在本题目中是进行三个有序数列的排序,并且这三个数列经过转换相当于使用结果序列。这三个序列分别为 :包含2的序列(2,4,6,8,10,……)包含3的序列(3,6,9,12,……)包含5的序原创 2020-07-09 10:25:45 · 126 阅读 · 0 评论 -
day43:平衡二叉树(递归)
问题描述:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。注意:规定空树也是一棵平衡二叉树。样例:只要二叉树中任意左右子树不满足高度相差为 1 就返回结果,所以设置全局变量ans,如果整棵树没有判断完就出现了不满足的情况,那么立马返回无需再进行后学判断,其中函数dfs用于记录树的高度,在记录的过程中判断此时的左右子树高度是否满足条件。class Solution {public: bool ans=tru原创 2020-07-08 10:18:51 · 532 阅读 · 0 评论 -
day42:42. 栈的压入、弹出序列
问题描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。注意:若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两个序列都为空,则视为是一个栈的压入、弹出序列。样例*输入:[1,2,3,4,5] [4,5,3,2,1]*输出:true这道题目只是要求判断后面的序列是否原创 2020-07-07 15:51:40 · 1042 阅读 · 0 评论 -
day41:圆圈中最后剩下的数字(约瑟夫环)
问题描述:在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcofLeecode解释class Solution {pu原创 2020-07-06 18:21:08 · 783 阅读 · 0 评论 -
day40:67. 数字在排序数组中出现的次数(二分查找)
问题描述:统计一个数字在排序数组中出现的次数。例如输入排序数组[1, 2, 3, 3, 3, 3, 4, 5]和数字3,由于3在这个数组中出现了4次,因此输出4。样例输入:[1, 2, 3, 3, 3, 3, 4, 5] , 3输出:4使用二分搜索,只不过是经典案例的改编,经典案例是寻找一个数字,该数字并不是重复的,而本题目是寻找一个数字出现的次数,该数字会出现多次,折半查找的思路是:1)设置初始查找区间:low=0,high=n-12)测试查找区间是否存在,如果不存在,则查找失败,否原创 2020-07-05 17:30:37 · 1551 阅读 · 0 评论 -
day39:数组中的逆序对(归并排序模板)
问题描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof问题求解使用到了归并排序,在排序整个数组的过程中将逆序的数对个数进行求解,使用递归进行归并排序,将整个数组分成两部分,分别用 i , j 指向这两个数组原创 2020-07-04 10:48:52 · 3802 阅读 · 0 评论 -
day38:表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。class Solution {public: bool isNumeric(string s) { int i=0,j=s.size(); while(i<=j&&s[i]=='原创 2020-07-03 09:45:00 · 584 阅读 · 0 评论