代码随想录——双指针/滑动窗口(二)

简介: 代码随想录——双指针/滑动窗口(二)

一.最长连续递增序列

  • go语言
func max(a,b int) int{
    if a>b{
        return a
    }
    return b
}
func findLengthOfLCIS(nums []int) int {
    n:=len(nums)
    maxlen:=0
    for l:=0;l<n;l++{
        r:=l+1
        for r<n&&nums[r]>nums[r-1]{
            r++
        }
        maxlen=max(r-l,maxlen)
    }
    return maxlen
}
  • cpp
int findLengthOfLCIS(vector<int>& nums) {
    int n = nums.size();
    int maxlen = 0;
    for (int l = 0; l < n; l++) {
        int r = l + 1;
        while (r < n && nums[r] > nums[r - 1]) {
            r++;
        }
        maxlen = max(r - l, maxlen);
    }
    return maxlen;
}

二.75. 颜色分类

  • go
func sortColors(nums []int)  {
    n:=len(nums)
    n0,n1:=0,0
    for i:=0;i<n;i++{
        num:=nums[i]
        nums[i]=2
        if num<2{
            nums[n1]=1
            n1++
        }
        if num<1{
            nums[n0]=0
            n0++
        }
    }
}
  • cpp
void sortColors(vector<int>& nums) {
    int n = nums.size();
    int n0 = 0, n1 = 0;
    for (int i = 0; i < n; i++) {
        int num = nums[i];
        nums[i] = 2;
        if (num < 2) {
            nums[n1++] = 1;
        }
        if (num < 1) {
            nums[n0++] = 0;
        }
    }
}

三. 904. 水果成篮

  • go
func max(a, b int) int {
  if a > b {
    return a
  }
  return b
}
func totalFruit(nums []int) int {
    cnt:=map[int]int{}
    maxlen:=0
    l:=0
    for r,x:=range(nums){
        cnt[x]++
        for len(cnt)>2{
            y:=nums[l]
            cnt[y]--
            if cnt[y]==0{
                delete(cnt,y)
            }
            l++
        }
        maxlen=max(maxlen,r-l+1)
    }
    return maxlen
}
  • cpp
class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        unordered_map<int,int> map;
        int l=0;
        int maxlen=0;
        int n=fruits.size();
        for(int r=0;r<n;r++)
        {
            map[fruits[r]]++;
            while(map.size()>2)
            {
                auto y=map.find(fruits[l]);
                y->second--;
                if(y->second==0)
                {
                    map.erase(y);
                }
                l++;
            }
            maxlen=max(maxlen,r-l+1);
        }
        return maxlen;
    }
};



相关文章
|
4月前
|
C语言
C语言指针带代码
C语言指针带代码
47 3
|
1月前
|
存储 大数据 测试技术
掌握 GoLang 中的指针:高效代码的提示和技巧
掌握 GoLang 中的指针:高效代码的提示和技巧
|
3月前
代码随想录——双指针(一)
代码随想录——双指针(一)
|
3月前
|
算法
双指针+滑动窗口
双指针+滑动窗口
|
3月前
|
Go C++
代码随想录——双指针与滑动窗口(四)
代码随想录——双指针与滑动窗口(四)
|
3月前
|
Go C++
代码随想录——双指针/滑动窗口(三)
代码随想录——双指针/滑动窗口(三)
|
4月前
|
C++
【C++】一文深入浅出带你参透库中的几种 [ 智能指针 ]及其背后实现原理(代码&图示)
【C++】一文深入浅出带你参透库中的几种 [ 智能指针 ]及其背后实现原理(代码&图示)
|
4月前
【错题集-编程题】dd爱框框(同向双指针 / 滑动窗口)
【错题集-编程题】dd爱框框(同向双指针 / 滑动窗口)
|
4月前
|
索引
LeetCode438题(无敌双指针——滑动窗口)
LeetCode438题(无敌双指针——滑动窗口)
|
10天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。