自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 int范围内数字的英文读法

题目给定一个整数,打印该整数的英文描述。示例 1:输入: 123输出: “One Hundred Twenty Three”示例 2:输入: 12345输出: “Twelve Thousand Three Hundred Forty Five”示例 3:输入: 1234567输出: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”示例 4:输入: 1234567891输出:

2020-09-11 22:57:42 727

原创 预测赢家,动态规划

题目:预测赢家给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/predict-the-win

2020-09-05 14:29:22 360

原创 除法求值,带权并查集+路径压缩

题目给出方程式 A/B=kA / B = kA/B=k, 其中 AAA 和 BBB 均为用字符串表示的变量, kkk 是一个浮点型数字。根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回 −1.0-1.0−1.0。示例 :给定 a/b=2.0,b/c=3.0a / b = 2.0, b / c = 3.0a/b=2.0,b/c=3.0问题: a/c=?,b/a=?,a/e=?,a/a=?,x/x=?a / c = ?, b / a = ?, a / e = ?, a / a = ?,

2020-08-12 11:00:56 200

原创 布尔运算,DFS记忆化搜索

题目给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成。实现一个函数,算出有几种可使该表达式得出 result 值的括号方法。示例 1:输入: s = “1^0|0|1”, result = 0输出: 2解释: 两种可能的括号方法是1^(0|(0|1))1^((0|0)|1)示例 2:输入: s = “0&0&0&1^1|0”,

2020-08-04 11:05:20 237

原创 最长递增子序列及应用扩展

题目一给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)O(n^{2})O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(nlogn)O(n log n)O(nlogn) 吗?方法一:动态规划解题思路思考定义状态:每个元素都可

2020-08-03 12:05:49 344

原创 给定硬币面值凑成金额共有多少种选法(动态规划)

题目硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+1+1+1+1+1+1说明:注意:你可以假设,0 <= n (总金额) &l

2020-08-01 13:08:06 1301 1

转载 C++list的使用总结及常用list操作(转)

一、List定义:List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件#include <list>二、List定义和初始化:    list<int>lst1;  &nbsp...

2020-07-29 09:42:01 355

原创 很久没用的数字逻辑知识(查找数组中仅出现一次的数字,其余数字出现了三次)

题目在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1解题思路查找每一个二进制位上1出现的次数,没出现为00(出现三次则抵消变为00),出现一次为01,出现两次为10。因此用两个二进制位表示这三种状态:a,b(具体到题目中需要有很多的二进制位表示int的每一位,因此直接用两个int变量来表示每一个二进

2020-07-22 19:28:31 707

原创 走完彼此走过的路后,我们终会相遇

解题思路两个链表如果相交部分长为b(b可以等于0),链表1长度为m,链表2长度为n。那么经过m+n步,他们一定会相遇在他们公共部分的第一个结点。如下图:接下来需要做的就是:如何让两个链表共同走 m+n 步。在第一个链表到达末尾的时候,让他接着等于第二个链表的初始位置。在第二个链表到达末尾的时候,让他接着第一个链表的开始位置继续走。结束条件为两个链表走到同一个结点。代码/** * Definition for singly-linked list. * struct ListNode

2020-07-22 11:35:06 109

原创 LeetCode 315. 计算右侧小于当前元素的个数 & 剑指 Offer 51. 数组中的逆序对

题目给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:[5,2,6,1]输出:[2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1个更小的元素 (1).6 的右侧有 1 个更小的元素 (1).1 的右侧有 0 个更小的元素.解题思路主要思路:运用归并排序的过程中,合并两个有序数组的操作可以计算逆序对

2020-07-16 21:29:51 114

原创 在排序数组中查找元素满足条件的第一个元素和最后一个元素

题目给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]解题思路可以先找第一个大于等于target的元素。再找

2020-07-16 21:29:43 1323

原创 合并k个非降序的链表

输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6

2020-07-16 21:29:31 115

原创 正则表达式简单匹配,DP实现

题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。解题思路用动态规划实现,dp[i][j]表示,s的前0-i与p的前0-j匹配的结果。数组开始全部初始化为false;为了计算方便,对两个字符串前面都

2020-07-16 21:28:25 495

原创 剑指 Offer 20. 表示数值的字符串(确定的有穷自动机DFA)

题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、“±5”、"-1E-16"及"12e+5.4"都不是。解题思路下面是DFA:注:用一个vector内层使用map来保存状态之间的转移去掉首位空格后建立的自动机,加上空格也可以,只是状态会多出来一个(尾部多出一个识别空格的状态)小数点前面可以没有数字,对应状态8小数点后面也可以没有数字,

2020-07-16 12:12:46 180

转载 软链接和硬链接

软链接和硬链接到底有啥作用和区别         前言:在网上搜索了好久,看了很多博客,某度知道等等。关于软硬链接的解释都太模糊,还有什么i节点,跨分区根本弄不明白,在查阅了书籍和询问老师后决定自己写一篇简单的博文,然初学者都能够明白的博文。一 建立软链接和硬链接的语法软链接:ln -s 源文件 目标文件 硬链接:ln ...

2020-07-03 09:23:58 1255

原创 LeetCode 378. 有序矩阵中第K小的元素 C++

方法一解题思路m行n列的矩阵每一行相当于一个排好序的数组,要求出第k大的数,需要对这m行一维数组进行最小堆的建立,选出第k大的元素。可以用STL中的优先队列实现,这里实现需要定义一个结构体,同时对结构体的小于号也要进行重载。结构体定义struct Point{ int val; int x; int y; Point(){} Point(int _val, int _x, int _y): val(_val), x(_x), y(_y){} .

2020-07-02 13:33:36 214

原创 常见的背包问题:01背包和完全背包

1. 01背包有 n 件物品和容量为 m 的背包,给出 n 件物品的重量 w[i] 以及价值 c[i] ,求解让装入背包的物品重量不超过背包容量且价值最大,每个物品只能选择一次 。暴力解法:暴力枚举每件物品要不要放入背包,时间复杂度O(2^n),显然是不能接受的,而使用 DP 可以将时间复杂度变成O(nm)。动态规划:用 dp[i][j] 表示,前 i 件物品放入容量为 j 的背包中所能获得的最大价值,很明显最终的 dp[n][m] 即为所求的结果,那么怎么求解 dp[i][j] 呢?不放第

2020-06-07 18:32:34 237

原创 KMP算法及其优化

      今天来记录一下,关于字符匹配的KMP算法。1.引言      也就是说,给定字符串text和pattern,需要判断字符串pattern是否为test的子串。pattern一般称为模式串,text为文本串。若匹配成功,则让函数返回,匹配开始处的下标,否则,返回-1。2.KMP中的核心—next数组的求解     &nbs

2020-06-07 16:58:16 368

原创 PAT中1089 Insert or Merge (25point(s)) 和 1098 Insertion or Heap Sort (25point(s))

  本节主要介绍 PAT 上关于 InsertSort、MergeSort、HeapSort 等排序算法的相关题目,具体算法的学习可以参见上一篇博客。1089 Insert or Merge (25point(s))According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, in

2020-05-09 18:07:45 151

原创 数据结构中的排序算法——插入排序、堆排序、归并排序、快速排序

       先从上面几种排序的算法说起,后面加一些PAT上面的题目。以下各算法均为升序算法插入排序几种排序算法中最简单的一种,代码也很容易书写,从数组第二位元素起,插入其到前面有序的序列中,算法如下:void InsertSort(int a[], int n){ //n为数组元素的大小,以数组下标为0为例 for(int i = 1; i < n; ++i){ int temp = a[i]; //先保存该位元素

2020-05-09 16:12:42 620

原创 PAT Cars on Campus

题目:Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out times and the plate numbers of the cars crossing the gate. Now with all the information available, y...

2020-04-18 23:28:46 196

原创 PAT 1082 Read Number in Chinese

题目:Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output Fu first if it is negative. For example, -123456789 is read as Fu yi Yi er Qian san ...

2020-04-17 14:34:41 166

原创 递归与回溯算法

  最近在看数据结构时,发现了很多关于递归回溯的问题,特别是在学习了树和图等非线性结构后,对递归回溯的问题也有了一些更深的认识。接下来我们来一起看看这二者的关系如何?  递归,是一种算法结构,,一个递归就是在函数中调用函数本身来解决问题。在描述问题的某一状态时,需要用到该状态的上一状态,而描述上一状态,又需要用到上一状态的上一状态……这种用自已来定义自己的方法,称为递归定义。当然递归也不是一直无...

2018-12-06 13:41:41 828

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除