秋招突击——算法打卡——6/6——复习{三数之和、考试最大困扰度}——快速新作{环形链表}

文章目录

明天面试拼多多,因为今天面华为遇到了一个做过的题目,没做出来,关键是这个题目第一次做出来了,这次居然没有做出来,比较烦,所以今天就是尽可能复习多个题目

复习

最大考试困扰度

cpp 复制代码
class Solution {
public:
    
int maxConsecutiveAnswers1(string s,int k ,char c){
    int res = 0,num = 0;
    for(int l = 0,r = 0;r < s.size();r ++){
        if(s[r] != c)  num ++; 
        while(num > k){
            // 移动左指针,保证num小于k
            if(s[l] != c) num --;
            l ++;
        }
        res = max(res,r - l + 1);
    }
    return res;
}

int maxConsecutiveAnswers(string s,int k){
  return max(maxConsecutiveAnswers1(s,k,'F'),
            maxConsecutiveAnswers1(s,k,'T')
            );
}

};

三数之和------做的不好

参考链接

  • 双指针,枚举左右两个指针
  • 出现了一个问题,并不知道怎么去除重复了。
  • 这次出现了两个问题
    • 首先对于i的最左侧的指针进行去重,必须要保证是i-1,是和上一个相同,和下一个相同就跳过,出现1,1,0,-2连续两个相邻的元素没有遍历到
    • 双指针应该是y小于k,所以这里做的也不对,变成了y<size
cpp 复制代码
class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> res;
        sort(nums.begin(),nums.end());
        for(int i = 0;i <= nums.size();i ++){
            if(i && nums[i - 1] == nums[i]) continue;
            for(int j = i + 1,k = nums.size() - 1;j < nums.size();j++){
            //for(int j = i + 1,k = nums.size() - 1;j < k;j++){
                if(k-1 > j && nums[i] + nums[j] + nums[k - 1] >= 0) k --;
                if(nums[i] + nums[j] + nums[k] == 0 )
                    res.push_back({nums[i] , nums[j] , nums[k]});
            }
        }
        return res;
    }
};

还有其他的一些题目,这里为了省时间,直接过的,没有记录

新作

环形链表

题目链接

  • 这道题使用的是快慢指针,速度差一,所以如果说存在环的情况下,一定会追上彼此的,如果遍历相等的话,就是表示存在环。
实现代码
cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *h) {
        if(!h || !h->next)    return false;
        auto s = h,f = h->next;
        while(f){
            s = s->next,f = f->next;
            if(!f) return false;
            f = f->next;
            if(f == s)  return true;
        }
        return false;
    }
};
相关推荐
森焱森1 小时前
APM与ChibiOS系统
c语言·单片机·算法·架构·无人机
★Orange★1 小时前
Linux Kernel kfifo 实现和巧妙设计
linux·运维·算法
尘世闲鱼1 小时前
解数独(C++版本)
开发语言·c++·算法·解数独
qqxhb1 小时前
零基础数据结构与算法——第四章:基础算法-排序(中)
数据结构·算法·排序算法·归并·快排·堆排
木叶丸2 小时前
编程开发中,那些你必须掌握的基本概念
前端·数据结构·编程语言
Y1nhl2 小时前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
qq_401700413 小时前
C语言中位运算以及获取低8位和高8位、高低位合并
c语言·开发语言·算法
CoovallyAIHub3 小时前
YOLO模型优化全攻略:从“准”到“快”,全靠这些招!
深度学习·算法·计算机视觉
闻缺陷则喜何志丹3 小时前
【BFS】 P10864 [HBCPC2024] Genshin Impact Startup Forbidden II|普及+
c++·算法·宽度优先·洛谷
MicroTech20253 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法