自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计数排序(countSort)

算法思路:利用空间来换时间的算法1.找出数组arr最大值与最小值2.构建一个长度为 [最大值-最小值+1] 的计数数组cnt,记录每个元素出现的次数,索引:arr[i] - minNum3. 自前往后,将 计数数组cnt 的元素存入原数组arr平均时间复杂度:O(n + k)n: 是输入数组长度,k是最大的数的大小空间复杂度:O(k)稳定性:稳定适合场景:待排序序列是在一定范围内的整数。代码实现一:1.找出数组arr最大值与最小值2.构建一个长度为 [最大值-最小值+1] 的计数数

2022-03-15 19:51:01 142

原创 基数排序(radixSort)

package mainimport ( "fmt" "math")func main() { arr := []int{3, 17, 746, 5, 24, 569, 6, 4, 2246, 10} radixSort(arr, 0, len(arr)-1, maxBits(arr)) for _, v := range arr { fmt.Println(v) }}func radixSort(arr []int, left, right, bits int) { //

2022-03-15 19:42:47 502

原创 堆排序(heapSort)

堆可以分为大根堆和小根堆,是一个完全二叉树堆排序是根据堆结构设计的一种排序堆的分类:大根堆:每个结点的值都大于其左孩子和右孩子结点的值小根堆:每个结点的值都小于其左孩子和右孩子结点的值数组中某元素的父结点和左右孩子结点,比如已知索引为i的数,那么1)父结点索引:(i-1)/22)左孩子索引:2i+13)右孩子索引:2i+2堆排序算法思路:1.首先将数组构造成一个大根堆,堆结构的顶端值为整个数组的最大值2.将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数为 size

2022-03-15 19:21:23 684

原创 计数排序(countSort)

package mainimport ( "fmt" "math")func main() { arr := []int{3, 7, 6, 5, 4, 9, 6, 4, 4, 10} countSort(arr) for _, v := range arr { fmt.Println(v) }}func countSort(arr []int) { maxNum, minNum := math.MinInt64, math.MaxInt64 for _, v := ran

2022-03-09 20:56:16 214

原创 归并排序(mergeSort)

算法思路:1.在未排序序列中找到中间索引mid,2.递归分治调用左半部分arr[left : mid]与右半部分arr[mid + 1 : right],3.merge左右两部分4.不断子序列递归分治平均时间复杂度:O(nlogn)Master公式:T(N) = 2 * T(N/2) + O(N1),即最终的结果为:O(N * logN)。空间复杂度:O(n): 开辟了最长长度为n的辅助数组稳定性:稳定 if arr[p1] <= arr[p2] { tem[

2022-03-09 13:40:20 197

原创 快速排序(quickSort)

快速排序package mainimport "fmt"func main() { arr := []int{1, 7, 6, 5, 4, 9} quickSort(arr, 0, len(arr)-1) for _, v := range arr { fmt.Println(v) }}func quickSort(arr []int, left, right int) { if left >= right { return } index := partitio

2022-03-08 11:57:59 142

原创 插入排序(insertSort)

普通插入排序:算法思路:1.数组分为两个部分:有序部分与无序部分2.将初始数据分为有序部分和无序部分,每一步将一个无序部分的数据插入到前面已经排好序的有序部分中3.以此类推,直到所有元素均排序完毕平均时间复杂度:O(n2)数据比较次数:(n - 1) + (n - 2) + (n - 3) + …… + 1 = 1/2n2 - 1/2n数据交换次数:(n - 1)总复杂度:1/2n2 + 1/2n - 1最佳时间复杂度:O(n2)最差时间复杂度:O(n)空间复杂度:O(1)稳定性:稳

2022-03-06 19:54:00 478

原创 冒泡排序(bubbleSort)

算法思路:从第一个元素开始,两两比较相邻两个元素数值的大小,数值大的放在后面(从小到大排列)时间复杂度:O(n2)空间复杂度:O(1)稳定性:不稳定适合场景:少量元素代码实现:方式一:双层循环遍历i : 当前正在排序的索引左边界j:用来遍历数组,进行冒泡操作package mainimport "fmt"func main() { arr := []int{1, 7, 6, 7, 98, 9, -1, 7, 89, 14, -4, -5, -657} bubbleSort(a

2022-03-05 16:52:50 324

原创 选择排序(selectSort)

普通选择排序:算法思路:1.在未排序序列中找到最小(大)元素,存放到未排序序列的起始位置2.从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置3.以此类推,直到所有元素均排序完毕平均时间复杂度:O(n2)数据比较次数:(n - 1) + (n - 2) + (n - 3) + …… + 1 = 1/2n2 - 1/2n数据交换次数:(n - 1)总复杂度:1/2n2 + 1/2n - 1最佳时间复杂度:O(n2)最差时间复杂度:O(n2)空间复杂度:O(1)稳定性

2022-03-04 20:07:39 653

原创 leetcode(448)找到所有数组中消失的数字

方法一:

2020-04-29 21:12:25 63

原创 leetcode(面试题 08.03) 魔术索引

方法一:直接遍历数组:class Solution {public: int findMagicIndex(vector<int>& nums) { int l=nums.size(); for(int i=0;i<l;i++){ if(nums[i]==i){ retu...

2020-04-29 21:12:12 139

原创 leetcode(1071) 字符串的最大公因子

方法一:

2020-04-29 21:11:51 65

原创 leetcode(520) 检测大写字母

方法一:判断否的情况:class Solution {public: bool detectCapitalUse(string word) { bool tagfirst=isupper(word[0]); bool tagsecond=isupper(word[1]); if(!tagfirst&&tagsecond)...

2020-04-29 16:29:39 100

原创 leetcode(1037) 有效的回旋镖

方法一:数学方法:三点共线斜率:class Solution {public: bool isBoomerang(vector<vector<int>>& points) { int a0=points[0][0]; int a1=points[0][1]; int b0=points[1][0];...

2020-04-29 16:27:18 132

原创 leetcode(482)密钥格式化

方法一:两步走:1、小写变大写2、插入“-”class Solution {public: string licenseKeyFormatting(string S, int K) { int cnt = 0; int len = S.size(); string temp = ""; for(int i = len...

2020-04-29 16:26:07 153

原创 leetcode(51)最大子序和

方法一:动态规划:class Solution {public: int maxSubArray(vector<int>& nums) { int n=nums.size(); if(n==0){ return 0; } int MaxSum=nums[0]; ...

2020-04-29 16:24:45 46

原创 leetcode(1189) “气球” 的最大数量

方法一:switch case:class Solution {public: int maxNumberOfBalloons(string text) { int res[5]={0}; for(auto i:text){ switch (i){ case'b':res[0]++;break;...

2020-04-29 16:04:50 96

原创 leetcode(1207) 独一无二的出现次数

方法一:利用map和setset.count()该元素是否在set中返回1或0;class Solution {public: bool uniqueOccurrences(vector<int>& arr) { unordered_map<int,int> m; for(auto i:arr){ ...

2020-04-29 16:04:12 139

原创 leetcode(389) 找不同

方法一哈希表:class Solution {public: char findTheDifference(string s, string t) { unordered_map <char,int> m1; for(int i=0;i<t.size();i++){ m1[t[i]]++; } ...

2020-04-29 16:03:35 59

原创 leetcode(459). 重复的子字符串

方法一:设 s=abab; s+s=abababab,从下标1开始寻找s,若s为子串重复多次构成,则find返回的值不会为下标4,即第二个s的开头设 s=abc; s+s=abcabc,从下标1开始寻找s,返回值为3,即第二个s的开头,因为s=abc不是子串重复多次构成的.class Solution {public: bool repeatedSubstringPattern(...

2020-04-29 16:03:14 62

原创 leetcode(1137)第 N 个泰波那契数

方法一:暴力迭代:超出时间范围:class Solution {public: int tribonacci(int n) { if(n==0||n==1){ return n; } if(n==2){ return 1; } return (tribon...

2020-04-28 21:09:34 84

原创 leetcode(278) 第一个错误的版本

方法一:线性扫描:超出时间:// The API isBadVersion is defined for you.// bool isBadVersion(int version);class Solution {public: int firstBadVersion(int n) { for(int i=1;i<n;i++){ ...

2020-04-28 21:08:24 118

原创 leetcode(917) 仅仅反转字母

方法一:双指针:class Solution {public: string reverseOnlyLetters(string S) { int start=0; int end=S.size()-1; while(start<=end){ if(!isalpha(S[start])){ ...

2020-04-28 21:08:01 144

原创 leetcode(657) 机器人能否返回原点

方法一“暴力:class Solution {public: bool judgeCircle(string moves) { int level=0; int high=0; for(int i=0;i<moves.size();i++){ if(moves[i]=='R'){ ...

2020-04-28 21:07:45 76

原创 leetcode(551) 学生出勤记录 I

方法一:暴力:class Solution {public: bool checkRecord(string s) { int Absent=0,Late=0; for(int i=0;i<s.size();i++){ if(s[i]=='A'){ Absent++; ...

2020-04-28 21:07:18 105

原创 leetcode(941)有效的山脉数组

方法一:暴力求解:线性扫描:class Solution {public: bool validMountainArray(vector<int>& A) { int l=A.size(); int i=0; while(i+1<l&&A[i]<A[i+1]){ ...

2020-04-28 21:06:47 94

原创 leetcode(852)山脉数组的峰顶索引

方法一:从头线性扫描:class Solution {public: int peakIndexInMountainArray(vector<int>& A) { int l=A.size(); int i=0; for(;i+1<l&&A[i]<A[i+1];i++); ...

2020-04-28 21:06:17 157

原创 leetcode(1051) 高度检查器

方法一:理解题意:class Solution {public: int heightChecker(vector<int>& heights) { int n=heights.size(); int cnt=0; vector<int> vec(heights);//vector复制初始化 ...

2020-04-28 21:03:14 140 1

原创 leetcode(944) 删列造序

方法一:贪心:对于每一列,我们检查它是否是有序的。如果它有序,则将答案增加 1,否则它必须被删除。class Solution {public: int minDeletionSize(vector<string>& A) { int ans=0; for(int i=0;i<A[0].size();i++){ ...

2020-04-28 21:02:45 115

原创 leetcode(521) 最长特殊序列 Ⅰ

方法一:解题思路:两字符串长度不等,特殊序列即为较大字符串,若长度相等切字符串相同返回-1,若长度相等,字符串不同,返回a或b长度。class Solution {public: int findLUSlength(string a, string b) { if(a.size() != b.size()) { return max(a....

2020-04-28 17:07:31 135

原创 leetcode(面试题10- I) 斐波那契数列

方法一:动态规划注意取模class Solution {public: int fib(int n) { if(n==0||n==1){ return n; } vector<long> vec(n+1); vec[0]=0; vec[1]=1; fo...

2020-04-28 17:06:08 208

原创 leetcode(374)猜数字大小

方法一:二分法/** * Forward declaration of guess API. * @param num your guess * @return -1 if num is lower than the guess number * 1 if num is higher than the guess number * ...

2020-04-28 17:04:37 109

原创 leetcode(35) 搜索插入位置

方法一:二分查找:class Solution {public: int searchInsert(vector<int>& nums, int target) { if(nums.size()==0) return 0; int low=0,high=nums.size()-1; int m...

2020-04-28 17:03:01 78

原创 leetcode(504)七进制数

方法一:递归:class Solution {public: string convertToBase7(int num) { if(num<0){ return "-"+convertToBase7(-1*num); } if(num<7){ return to_string...

2020-04-28 17:00:04 86

原创 leetcode(面试题10- II) 青蛙跳台阶问题

方法一:class Solution {public: int numWays(int n) { if(n==0){ return 1; } if(n==1){ return 1; } vector<int> vec(n+1,0); ...

2020-04-28 16:59:46 160

原创 leetcode(1323) 6 和 9 组成的最大数字

方法一:模拟:class Solution {public: int maximum69Number (int num) { string s=to_string(num); for(int i=0;i<s.size();i++){ if(s[i]=='6'){ s[i]='9'; ...

2020-04-28 16:59:14 94

原创 leetcode(1380) 矩阵中的幸运数

方法一:行列讨论:遍历每一行,找出最小值;根据该最小值比较对应的列上的数,判断是否是最大值若是,则存入vector中class Solution {public: vector<int> luckyNumbers (vector<vector<int>>& matrix) { vector<int> an...

2020-04-28 16:58:55 138

原创 leetcode(766)托普利茨矩阵

方法一:与左上元素比较:class Solution {public: bool isToeplitzMatrix(vector<vector<int>>& matrix) { bool flag=true; int m=matrix[0].size(); int n=matrix.size(); ...

2020-04-28 16:58:39 64

原创 leetcode(1200) 最小绝对差

方法一:暴力法:两次遍历:class Solution {public: vector<vector<int>> minimumAbsDifference(vector<int>& arr) { vector<vector<int>> ans; sort(arr.begin(),a...

2020-04-28 16:58:26 158

原创 leetcode(1078) Bigram 分词

方法一:

2020-04-28 16:57:49 99

空空如也

空空如也

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

TA关注的人

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