【复习61-66题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十四天 44/50

news2024/12/27 15:44:35

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持40分钟,一周学5天,复习2天
也就是一周学10道题
50天后我们就可以学完76道题,相信50天后,我们一定可以有扎实的代码基础!我们每天就40分钟,和我一起坚持下去吧!
qq群:866984458

本题出自 acwing网站
这个系列是免费的
打卡即刻退回费用。

第四十四天【剑指Offer例题代码 系列】

    • 61. 数组中只出现一次的两个数字【异或 相同的为0】
    • 62. 数组中唯一只出现一次的数字
        • 方法一:统计每一位中 1出现的个数
        • 方法二:循环
    • 63. 和为S的两个数字【unordered_set<int>】
        • unordered_set<int>
        • 利用hash.count 和 hash.insert
        • unordered_map
        • 利用find != mp.end() 和 mp[x] = a;
    • 64. 和为S的连续正数序列【双指针】
    • 65. 翻转单词顺序【微软面试题】
        • 字符串读入处理:全部读入,通过遍历处理
    • 66. 左旋转字符串

61. 数组中只出现一次的两个数字【异或 相同的为0】

在这里插入图片描述

class Solution {
public:
    vector<int> findNumsAppearOnce(vector<int>& nums) {
        int sum = 0;
        for (auto x : nums) sum ^= x;
        int k = 0;
        while (!(sum >> k & 1)) k ++ ;
        int first = 0;
        for (auto x : nums)
            if (x >> k & 1)
                first ^= x;
        return vector<int>({first, sum ^ first});
    }
};

62. 数组中唯一只出现一次的数字

在这里插入图片描述

方法一:统计每一位中 1出现的个数

class Solution {
public:
    int findNumberAppearingOnce(vector<int>& nums) {
        int ans = 0;
        for (int i = 31; i >= 0; --i) {
            int cnt = 0;
            for (int x: nums) {
                if (x >> i & 1) {
                    cnt ++;
                }
            }
            if (cnt % 3 == 1) {
                ans = (ans * 2) + 1;
            }
            else {
                ans = ans * 2;
            }
        }
        return ans;
    }
};

方法二:循环

每一位出现的1的次数 要么是 3k 要么是3k+1

那么我们就通过异或
使得3k的1都异或成0
由于数组个数一定是3k+1

那么只要我们让3k异或成0
那么1一定保留

所以我们就让循环规律为3个一循环

class Solution {
public:
    int findNumberAppearingOnce(vector<int>& nums) {
        int ones = 0, twos = 0;
        for (auto x : nums)
        {
            ones = (ones ^ x) & ~twos;
            twos = (twos ^ x) & ~ones;
        }
        return ones;
    }
};

63. 和为S的两个数字【unordered_set】

在这里插入图片描述

unordered_set

利用hash.count 和 hash.insert

class Solution {
public:
    vector<int> findNumbersWithSum(vector<int>& nums, int target) {
        unordered_set<int> hash;
        for (auto x : nums)
        {
            if (hash.count(target - x)) return vector<int>{target - x, x};
            hash.insert(x);
        }
        return vector<int>();
    }
};

unordered_map

利用find != mp.end() 和 mp[x] = a;

class Solution {
public:
    vector<int> findNumbersWithSum(vector<int>& nums, int target) {
        vector<int> ans;
        unordered_map<int,int> mp;
        for(auto x:nums){
            if(mp.find(target-x)!=mp.end())
            {
                ans.push_back(x);
                ans.push_back(target-x);
                return ans;
            }
            mp[x] = target-x;
        }
    }
};

64. 和为S的连续正数序列【双指针】

在这里插入图片描述
由于需要的是连续的
所以考虑双指针

class Solution {
public:
    vector<vector<int> > findContinuousSequence(int sum) {
        vector<vector<int>> res;
        for (int i = 1, j = 1, s = 1; i <= sum; i ++ )
        {
            while (s < sum) j ++, s += j;
            if (s == sum && j > i)
            {
                vector<int> line;
                for (int k = i; k <= j; k ++ ) line.push_back(k);
                res.push_back(line);
            }
            s -= i;
        }
        return res;
    }
};

65. 翻转单词顺序【微软面试题】

字符串读入处理:全部读入,通过遍历处理

在这里插入图片描述
看样例

首先我们知道的是
一定是把输入的 全部翻转

但是翻转过来我们发现 所有单词也都是翻转的

所以我们先把所有单词翻转一遍

然后再整体翻转一遍

class Solution {
public:
    string reverseWords(string s) {
        for (int i = 0; i < s.size(); i ++ )
        {
            int j = i;
            while (j < s.size() && s[j] != ' ') j ++ ;
            reverse(s.begin() + i, s.begin() + j);
            i = j;
        }
        reverse(s.begin(), s.end());
        return s;
    }
};

66. 左旋转字符串

在这里插入图片描述


class Solution {
public:
    string leftRotateString(string str, int n) {
        reverse(str.begin(), str.end());
        reverse(str.begin(), str.begin() + str.size() - n);
        reverse(str.begin() + str.size() - n, str.end());
        return str;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/831724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KEIL Map文件解析以及如何从Map文件还原内存分布

一、什么是Map文件 简单来说&#xff0c;Map文件是编译器编译工程后生成的一个文件&#xff0c;这个文件反映了各个源文件生成的模块间的交叉引用、移除的未使用模块、符合映射表、内存映射以及各个模块的大小和汇总数据等。 所以说&#xff0c;当你在遇到或怀疑存在内存越界或…

RISC-V基础之函数调用(三)保留寄存器(包含实例)

RISC-V将寄存器分为保留和非保留两类。保留寄存器是指在函数调用前后必须保持相同值的寄存器&#xff0c;因为调用者期望在调用后能够继续使用这些寄存器的值。保留寄存器包括s0到s11&#xff08;因此称为saved&#xff09;&#xff0c;sp和ra。非保留寄存器&#xff0c;也称为…

2023年华数杯B题

B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明 制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色 存在一定的局限性&#xff0c;如主观性强、效率低下等。因此&#xff0…

uniapp封装request请求

在基础文件里面创建一个api文件 在创建两个 js文件 http.js 里面封装 request 请求 let baseUrl https://white.51.toponet.cn; //基地址 export const request (options {}) > {//异步封装接口&#xff0c;使用Promise处理异步请求return new Promise((resolve, reject…

html学习7(iframe)

1、通过使用iframe标签定义框架&#xff0c;可在同一个浏览器中显示不止一个画面。 2、height和width属性用于定义框架的高度与宽度。 3、属性frameborder‘0’用于是否显示边框。 4、iframe可以显示一个目标链接的页面&#xff0c;链接的target属性设置为相应的iframe名称。…

【无网络】win10更新后无法联网,有线无线都无法连接,且打开网络与Internet闪退

win10更新后无法联网&#xff0c;有线无线都无法连接&#xff0c;且打开网络与Internet闪退 法1 重新配置网络法2 更新驱动法3 修改注册表编辑器法4 重装系统 自从昨晚点了更新与重启后&#xff0c;今天电脑就再也不听话了&#xff0c;变着花样地连不上网。 检查路由器&#xf…

win10笔记本显示器根据页面显示亮度自动调节亮度的问题

系统是win10企业版&#xff0c;针对这个问题查了很多种方法&#xff0c;比如&#xff1a; 1、控制面板->硬件和声音->电源选项->点击当前电源计划的更改计划设置->更改高级电源设置->显示->启用自适应亮度 但是我发现我的电源计划只有平衡这一种&#xff0c…

Linux系统jenkins+newman+postman持续集成环境搭建

1、首先安装nodejs 下载nodejs压缩包&#xff0c;下载地址&#xff1a;nodejs官网下载 建议不用下载最新的&#xff0c;我这里用的是推荐的v12.18版本 下载和解压命令 wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz解压安装包&#xff08;记得没有z&…

基于Kubernetes环境的高扩展机器学习部署利器——KServe

随着ChatGPT的发布&#xff0c;人们越来越难以回避利用机器学习的相关技术。从消息应用程序上的文本预测到智能门铃上的面部识别&#xff0c;机器学习&#xff08;ML&#xff09;几乎可以在我们今天使用的每一项技术中找到。 如何将机器学习技术交付给消费者是企业在开发过程中…

使用cmd查看3568主板相关

主要是说清楚思路的 rk3568主板能运行的程序都在system/bin里面&#xff0c;这个是我们直接可以使用cmd用到的 所以&#xff0c;往后我们想通过cmd了解RK3568的某一项参数的时候&#xff0c;或者想使用RK3568某一个系统功能的时候。应该先去system/bin里面查找对应的系统程序。…

Jenkins配置测试报告后无法正常显示或显示空白 的解决方法(问题集锦)

Jenkins配置测试报告后无法正常显示或显示空白&#xff1f; 现象1&#xff1a;界面样式错乱原因分析临时策略永久策略 现象2&#xff1a;报告路径不存在原因分析解决策略 现象3&#xff1a;docker和操作系统版本不匹配原因分析解决策略 现象1&#xff1a;界面样式错乱 打开报告…

实验笔记之——apk生成

最近拾回Android开发&#xff08;实验笔记之——Windows下的Android环境开发搭建_gwpscut的博客-CSDN博客&#xff09;&#xff0c;花了两天时间&#xff0c;写了个二维码识别的app 忘记如何生成apk了&#xff0c;写个笔记来记录一下 需要创建一下 对应的设置好 这里勾选上记住…

系统保留分区被误删怎么办?

当您在全新的磁盘上安装Windows时&#xff0c;将在磁盘的开头创建一个名系统保留的分区&#xff0c;大小约为100MB&#xff0c;然后是系统驱动器&#xff0c;然后是其他的驱动器。通常&#xff0c;系统保留分区在Windows 8中为350MB&#xff0c;在Windows 10中为500MB。系统保留…

网络安全(黑客)自学就业

前段时间&#xff0c;遇到网友提问&#xff0c;说为什么我信息安全专业的找不到工作&#xff1f; 造成这个结果主要是有两大方面的原因。 第一个原因&#xff0c;求职者本身的学习背景问题。那这些问题就包括学历、学校学到的知识是否扎实&#xff0c;是否具备较强的攻防实战…

webpack基础知识三:说说webpack中常见的Loader?解决了什么问题?

一、是什么 loader 用于对模块的"源代码"进行转换&#xff0c;在 import 或"加载"模块时预处理文件 webpack做的事情&#xff0c;仅仅是分析出各种模块的依赖关系&#xff0c;然后形成资源列表&#xff0c;最终打包生成到指定的文件中。如下图所示&#…

智能灯控无线蓝牙解决方案_SKB369串口BLE蓝牙模块

​蓝牙技术受益于其智能、低功耗、高连接速度等特性&#xff0c;在物联网市场呈现爆发式增长是物联网工程师有目共睹的。目前国际物联网最常用的无线通信技术标准主要有三种&#xff1a;WiFi、Zigbee和蓝牙&#xff0c;据不完全统计显示&#xff0c;在民用领域以WiFi和蓝牙为通…

C语言每日一题:13《数据结构》环形链表。

题目链接&#xff1a; 一.环形链表运动基础。 使用快慢指针利用相对移动的思想&#xff1a; 1.第一种情况&#xff1a; 1,令快指针&#xff08;fast&#xff09;速度为2. 2.慢指针&#xff08;slow&#xff09;速度为1. 3.以慢指针进入环中开始。 4。假设slow刚刚进入环中fast…

微信新技能解锁——微信图片可以转Excel表格!

大家好呀&#xff0c;你们是不是跟我一样&#xff0c;收到表格图片没法修改&#xff01; 今天我教大家一个微信隐藏功能&#xff0c;图片可以一键转Excel表格&#xff0c;还能继续编辑&#xff0c;而且还特别简单简直太爱了&#xff5e; 只需打开微信&#xff0c;点击聊天界面…

Openssh高危漏洞CVE-2023-38408修复方案

0x01 漏洞简述 2023年07月21日&#xff0c;360CERT监测发现OpenSSH发布了OpenSSH的风险通告&#xff0c;漏洞编号为CVE-2023-38408&#xff0c;漏洞等级&#xff1a;高危&#xff0c;漏洞评分&#xff1a;8.1。 OpenSSH 是 Secure Shell (SSH) 协议的开源实现&#xff0c;提供…

SpringBoot中mybatis分页插件的使用--【pagehelper组件】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录本系列校训 SpringBoot技术很多很多环境及工具&#xff1a;上效果图目前流行的mybatis分页插件在Spring Boot里使用pagehelperJAVA查询列表时页面上的使用还要注意的是 …