当前位置: 首页 > news >正文

顺序表vector--------练习题9题解

前言

今日天气晴朗,是一个值得睡觉的软绵绵的星期天,所以我今天起晚了一点,伴随着学习的进步,一些生活上的事情也随时间出现啦,妈妈的生日快到了,小魔丸的生日也快到了,我要着手开始准备生日礼物啦,一年两年前的我也许会慌不择路,现在的我也算是气定神闲啦,但也没有那么迎刃有余,所以要多问问朋友的建议,这样比较保险。精心准备的礼物不仅能让对方觉得受到关心和重视,而且可以留下美好的回忆,对于我来说也可以积攒经验,也算是一桩美事啦。

题目

解法

class Solution {
public:int duplicateNumbersXOR(vector<int>& nums) {int pro=0,ret=0;int size = nums.size();for(int i=0;i<size;i++){for(int j=i+1;j<size;j++){if(nums[i]==nums[j]){ret = nums[i];pro = ret^pro;break;}}}return pro;}
};

这是我自己的解法,利用两个变量缓存符合条件的值和位或结果,时间复杂度为O(n^2),空间复杂度为O(1).

优化解法

class Solution {
public:int duplicateNumbersXOR(vector<int>& nums) {long long m=0;//初始化为0int size = nums.size();int ans=0;for(int i=0;i<size;i++){if(m&((long long)1<<nums[i])){//1为long long类型ans=ans^nums[i];}else{m = m|((long long)1<<nums[i]);}}return ans;}
};

这个是老师的解法,利用位与运算和位或运算,将时间复杂度从O(n^2)优化为O(n),具体思路是利用一个标记位,就是一个全是0的50位数字串,然后遇到哪个数,就把1左移几位与这个数字串做位与运算,如果得1,则用ans与它做异或运算,如果得0,则通过位或运算,将1左移几位的数传入标记为中,核心逻辑就是利用这个标记位来判断数是否会出现两次,然后进行异或运算。

反思

1.考察知识点:按位XOR值就是两个数异或以后的结果,位运算中的位或和位与;

2.踩的坑:不清楚按位XOR值的意思,对位运算的运用不熟练;

3.可以优化的地方:利用标记位和位运算,降低时间复杂度。

http://www.dtcms.com/a/589593.html

相关文章:

  • 深入浅出:低噪声放大器(LNA)与USB芯片——无线与有线通信的基石
  • C++线程操作
  • 培训网站网站建设上海 网站建设google
  • OpenCV 第10课 图像处理—阈值处理
  • 力扣刷题-借助哈希完成一次遍历
  • 网络图标误报?电脑显示无网却能上网的快速修复法
  • 二七区做网站动画设计培训机构
  • 做网站九州科技哈尔滨网络公司定制开发
  • 链动2+1模式、AI智能名片与S2B2C商城小程序:破解直播电商流量转化困局的创新路径
  • 建设网站基本思路系统页面模板
  • 怎样制作属于自己的网站app排版网站
  • 福建设计招聘网站网站服务设计
  • zabbix结合grafana打造自定义炫酷监控界面实战
  • 网站建设的安全性问题宁波网站建设 网络服务
  • 网站asp文件只读做网站的目的和要求
  • Git_log_查看文件的修改记录不完整
  • 计算机网络---安全外壳协议(SSH,Secure Shell)
  • 从0到1学习Qt -- 常见控件(一)
  • java小案例3
  • wordpress支付界面出现500如何做网站seo排名优化
  • 基于Spring Boot电子签平台,实名认证+CA证书
  • 052_小驰私房菜_MTK 平台可能可以提升camera帧率的一些修改
  • 多天线技术
  • 聊城市网站制作江门做网站多少钱
  • 行为型设计模式1
  • MATLAB实现白噪声与色噪声仿真
  • 甘德县公司网站建设工业设计公司如何运营
  • JAVA-Redis上
  • 免费空间 上传网站虚拟主机推荐
  • mysql配置主从同步