力扣1911、最大子序列交替和
摘要:

1、动态规划(128ms,89%;89MB,47%) 时间复杂度:O(n):n为数组元素个数 空间复杂度:O(1) 1 class Solution { 2 public: 3 long theMax(long a,long b,long c){ 4 return a>b? (a>c? a:c):(
阅读全文
力扣53、最大子数组和
摘要:

1、双循环(超时) 时间复杂度:O(n^2):n为数组元素个数 空间复杂度:O(1) 1 int maxSubArray(vector<int>& nums) { 2 int maxnum=nums[0]; 3 int sum=0; 4 for(int i=0;i<nums.size();i++){
阅读全文
力扣1901、找出顶峰元素Ⅱ
摘要:

1、二分法(124ms,95%;45.2MB,24%) 时间复杂度:O(nlog m):m、n分别是矩阵的行数、列数 空间复杂度:O(1) 1 //max_element(r,r+6)返回数组前6个元素中的最大值的地址 2 //取值则为*max_element(r,r+6) 3 //int(返回的地
阅读全文
力扣240、搜索二维矩阵Ⅱ
摘要:

1、直接循环(超出时间限制) 时间复杂度:O(mn):m、n分别为矩阵的行数、列数,mn即为矩阵元素个数 空间复杂度:O(1) bool searchMatrix(vector<vector<int>>& matrix, int target) { if(matrix.empty()) return
阅读全文
力扣74、搜索二维矩阵
摘要:

1、直接循环(4ms,76%;9.3MB,31%) 时间复杂度:O(n):最坏情况要遍历整个数组 空间复杂度:O(1) bool searchMatrix(vector<vector<int>>& matrix, int target) { if(matrix.empty()) return fal
阅读全文
力扣81、搜索旋转排序数组Ⅱ
摘要:

1、直接循环(4ms,90%;13.5MB,85%) 时间复杂度:O(n):循环次数 空间复杂度:O(1) 1 bool search(vector<int>& nums, int target) { 2 if(nums.empty()) 3 return false; 4 int n=0; 5 w
阅读全文
力扣33、搜索旋转排序数组
摘要:

1、二分法(4ms,69%;10.8MB,70%) 时间复杂度:O(log n) 空间复杂度:O(1) 1 int search(vector<int>& nums, int target) { 2 //这里的empty()注意是空则返回真 3 if(nums.empty()) 4 return -
阅读全文
力扣50、Pow(x,n)
摘要:

1、直接循环求(超时) 1 double myPow(double x, int n) { 2 if(n==0||x==1) 3 return 1; 4 double temp=x; 5 if(n<0){ 6 x=1/x; 7 temp=x; 8 n*=-1; 9 } 10 while(--n>0)
阅读全文
力扣234、回文链表
摘要:

1、转成数组处理(208ms,33%;125MB,14%) 时间复杂度O(n):复制处是O(n),判断处是O(n/2)即O(n),相加即为O(n) 空间复杂度O(n):复制处用了大小为n的数组存链表数据,即O(n) 1 bool isPalindrome(ListNode* head) { 2 //
阅读全文
力扣21、合并两个有序链表
摘要:

1、递归(4ms,93%;14.4MB,76%) 1 //递归需关注目前这一层的数据如何处理,以及如何结束递归 2 //即该层数据以什么状态传给下一层,以及数据以什么状态返回上一层 3 ListNode* mergeTwoLists(ListNode* list1, ListNode* list2)
阅读全文
力扣69、x的平方根
摘要:

1、换函数exp()(0ms,100%;6.2MB,5%) 1 int mySqrt(int x) { 2 if(x==0) 3 return x; 4 int num=exp(0.5*log(x)); 5 if(long (num+1)*(num+1)<=x) 6 return num+1; 7
阅读全文
力扣231、2的幂
摘要:

1、相等法(4ms,47%;5.9ms,5.3%) 1 bool isPowerOfTwo(int n) { 2 //反向增加 3 int m=1; 4 //保留原值 5 int num=n; 6 while(n>1){ 7 n/=2; 8 m*=2; 9 } 10 return m==num; 1
阅读全文
力扣452、用最少数量的箭引爆气球
摘要:

1、第二维升序排序(436ms,24%;99.9MB,12%) 1 int findMinArrowShots(vector<vector<int>>& points) { 2 if (points.empty()) { 3 return 0; 4 } 5 //对向量的第二维进行升序排序,如示例1排
阅读全文
力扣860、柠檬水找零
摘要:

1、增强for+while(68ms,97%;81.4MB,73%) 1 bool lemonadeChange(vector<int>& bills) { 2 int five = 0; 3 int ten = 0; 4 int change; 5 for (auto bill:bills) {
阅读全文
力扣1323、6和9组成的最大数字
摘要:

1、字符串和十进制互转(0ms,100%;5.8MB,75%) 1 int maximum69Number (int num) { 2 //to_string()将数值转化为字符串,并返回字符串 3 string str=to_string(num); 4 //遍历字符串并引用单个字符 5 for(
阅读全文
力扣1710、卡车上的最大单元数
摘要:

1、降序排序(40ms,70%;15.5MB,92%) 1 int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) { 2 //这是二维向量,boxTypes.size()表示行数,boxTypes[].size()表示列数 3
阅读全文
力扣1827、最少操作使数组递增
摘要:

1、双while(超时) 2、while+if(12ms,81%;15.4MB,51%) 1 int minOperations(vector<int>& nums) { 2 int ins=0; 3 int i=0; 4 while(i+1<nums.size()){ 5 if(nums[i]>=
阅读全文
力扣1903、字符串中的最大奇数
摘要:

1、贪心+int判断(24ms,54%;14.6MB,44%) 1 string largestOddNumber(string num) { 2 int len=num.size(); 3 for(int i=len-1;i>=0;i--){ 4 //-'0'相当于减0的ASCII码48,将字符串
阅读全文
力扣1748、唯一元素的和
摘要:

1、for循环(4ms,56%;7.6MB,74%) 1 int sumOfUnique(vector<int>& nums) { 2 int a[101]={0}; 3 int max=0; 4 int sum=0; 5 for(int b:nums){ 6 a[b]++; 7 if(max<b)
阅读全文
力扣151、翻转字符串里的单词
摘要:

1、遍历+截取(4ms,82%;7.2MB,38%) 1 string reverseWords(string s) { 2 //从后面往前面遍历 3 int len=s.size()-1; 4 string str; 5 while(len>=0){ 6 int sum=0; 7 //排除空格 8
阅读全文