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

做游戏装备网站可以吗百度指数的主要用户是

做游戏装备网站可以吗,百度指数的主要用户是,平度网站建设,网络营销做的比较好的企业一、题目描述 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1: 输入:n…

一、题目描述

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

示例 1:

输入:nums = [2,2,3,2]
输出:3

示例 2:

输入:nums = [0,1,0,1,0,1,99]
输出:99

提示:

  • 1 <= nums.length <= 3 * 10^4
  • -2^31 <= nums[i] <= 2^31 - 1
  • nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

二、解题思路

这个问题是一个典型的位操作问题。由于每个元素都出现了三次,除了一个元素只出现了一次,我们可以考虑每个元素的每一位。如果将所有元素在每个位上累加起来,那么每个位上的和应该是3的倍数。如果有任何位上的和不是3的倍数,那么只出现一次的元素在该位上必须是1。

例如,假设数组是 [2,2,3,2](二进制表示为 [10, 10, 11, 10]):

  • 在第一位(最右边)上,所有数的和是 1+1+1+1 = 4,不是3的倍数,这意味着只出现一次的数的第一位是1。
  • 在第二位上,所有数的和是 0+0+1+0 = 1,不是3的倍数,这意味着只出现一次的数的第二位是1。

所以,只出现一次的数是 11,即 3。

我们可以用这样的方法检查每个位,然后重构出只出现一次的数。

以下是具体的解题步骤:

  1. 初始化一个长度为32的数组(因为一个整数的二进制表示最多有32位)来存储每一位的和。
  2. 遍历数组 nums 中的每个数,对于每个数,检查其二进制表示的每一位,如果是1,则将对应位的和加1。
  3. 遍历完成后,检查每一位的和,如果不是3的倍数,那么只出现一次的数在该位上是1。
  4. 根据这些信息,重构出只出现一次的数。

三、具体代码

class Solution {public int singleNumber(int[] nums) {int[] count = new int[32]; // 32位整数for (int num : nums) {for (int i = 0; i < 32; i++) {count[i] += (num >> i) & 1; // 检查num的第i位是否为1}}int result = 0;for (int i = 0; i < 32; i++) {// 如果count[i]不是3的倍数,那么result的第i位是1result |= (count[i] % 3) << i;}return result;}
}

四、时间复杂度和空间复杂度

1. 时间复杂度
  • 遍历数组 nums 中的每个元素是一个 O(n) 操作,其中 n 是数组 nums 的长度。
  • 对于每个元素,我们检查它的每一位,这是一个 O(1) 操作,因为一个整数的位数是固定的,最多为 32 位。
  • 因此,外层循环的时间复杂度是 O(n),内层循环的时间复杂度是 O(1),所以总的时间复杂度是 O(n)。
2. 空间复杂度
  • 我们使用了一个长度为 32 的数组 count 来存储每一位的和,这是一个固定大小的数组,不随输入数组 nums 的大小而变化。
  • 因此,空间复杂度是 O(1),即常数空间复杂度。

综上所述,给定代码的时间复杂度是 O(n),空间复杂度是 O(1)。这满足了题目要求的线性时间复杂度和常数空间复杂度。

五、总结知识点

1. 位操作

  • >>:右移操作符,用于将一个数的二进制表示向右移动指定的位数。例如,num >> i 表示将 num 的二进制表示向右移动 i 位。
  • &:按位与操作符,用于对两个数的二进制表示进行逐位比较,只有两个位都是1时,结果位才是1。在这里,(num >> i) & 1 用于检查 num 的第 i 位是否为1。
  • |:按位或操作符,用于对两个数的二进制表示进行逐位比较,只要有一个位是1,结果位就是1。在这里,result |= (count[i] % 3) << i 用于将 result 的第 i 位设置为1,如果 count[i] % 3 不为0。

2. 数组的初始化和使用

  • int[] count = new int[32];:初始化一个长度为32的整数数组,用于存储每一位的和。

3. 循环结构

  • for (int num : nums):这是Java中的增强型for循环,用于遍历数组 nums 中的每个元素。
  • for (int i = 0; i < 32; i++):这是一个传统的for循环,用于重复执行32次,每次循环处理一个二进制位。

4. 取模运算

  • %:取模运算符,用于计算一个数除以另一个数后的余数。在这里,count[i] % 3 用于检查 count[i] 是否是3的倍数。

5. 位掩码

  • 1 << i:创建一个只在第 i 位上为1的位掩码。这个掩码用于将 count[i] % 3 的结果放到 result 的正确位置上。

以上就是解决这个问题的详细步骤,希望能够为各位提供启发和帮助。


文章转载自:
http://classify.cwgn.cn
http://swore.cwgn.cn
http://circiter.cwgn.cn
http://weatherglass.cwgn.cn
http://lippizaner.cwgn.cn
http://equiponderate.cwgn.cn
http://isotropous.cwgn.cn
http://masterplan.cwgn.cn
http://clubroot.cwgn.cn
http://cicala.cwgn.cn
http://manometric.cwgn.cn
http://chiropractor.cwgn.cn
http://athleticism.cwgn.cn
http://sinic.cwgn.cn
http://roquefort.cwgn.cn
http://reply.cwgn.cn
http://elect.cwgn.cn
http://bilbo.cwgn.cn
http://frisco.cwgn.cn
http://consubstantiate.cwgn.cn
http://kirgizia.cwgn.cn
http://misshape.cwgn.cn
http://pentatonism.cwgn.cn
http://enactive.cwgn.cn
http://overspread.cwgn.cn
http://crooner.cwgn.cn
http://el.cwgn.cn
http://pickpocket.cwgn.cn
http://homemade.cwgn.cn
http://telescopiform.cwgn.cn
http://adiabat.cwgn.cn
http://bellyfat.cwgn.cn
http://complacent.cwgn.cn
http://unmediated.cwgn.cn
http://lispingly.cwgn.cn
http://catalpa.cwgn.cn
http://kinematics.cwgn.cn
http://stumper.cwgn.cn
http://hellery.cwgn.cn
http://stroboradiograph.cwgn.cn
http://sql.cwgn.cn
http://housemaster.cwgn.cn
http://subsidiary.cwgn.cn
http://monotone.cwgn.cn
http://repercussiveness.cwgn.cn
http://mastoidal.cwgn.cn
http://troupe.cwgn.cn
http://androcles.cwgn.cn
http://subtil.cwgn.cn
http://irreversible.cwgn.cn
http://mapi.cwgn.cn
http://prognathous.cwgn.cn
http://monostele.cwgn.cn
http://ladleful.cwgn.cn
http://electrophotometer.cwgn.cn
http://shicker.cwgn.cn
http://loadage.cwgn.cn
http://craftwork.cwgn.cn
http://leucopoiesis.cwgn.cn
http://nonsense.cwgn.cn
http://taxonomy.cwgn.cn
http://faesulae.cwgn.cn
http://apiarian.cwgn.cn
http://intercommunicate.cwgn.cn
http://balloonist.cwgn.cn
http://relevantly.cwgn.cn
http://antiphrasis.cwgn.cn
http://apprehension.cwgn.cn
http://thyrotrophin.cwgn.cn
http://keck.cwgn.cn
http://duck.cwgn.cn
http://tableaux.cwgn.cn
http://besiege.cwgn.cn
http://ionogen.cwgn.cn
http://untouched.cwgn.cn
http://ardent.cwgn.cn
http://leakiness.cwgn.cn
http://fillibuster.cwgn.cn
http://tricorne.cwgn.cn
http://zimbabwean.cwgn.cn
http://graphiure.cwgn.cn
http://bengaline.cwgn.cn
http://fleshpot.cwgn.cn
http://sunbake.cwgn.cn
http://dinero.cwgn.cn
http://lousiness.cwgn.cn
http://metonymy.cwgn.cn
http://cheerio.cwgn.cn
http://turnip.cwgn.cn
http://malines.cwgn.cn
http://premedical.cwgn.cn
http://hardenable.cwgn.cn
http://desman.cwgn.cn
http://seedbed.cwgn.cn
http://falsely.cwgn.cn
http://proletarianism.cwgn.cn
http://grantsman.cwgn.cn
http://parity.cwgn.cn
http://fanner.cwgn.cn
http://fluoridation.cwgn.cn
http://www.hrbkazy.com/news/58119.html

相关文章:

  • 渭南汽车网站制作竞价推广账户托管服务
  • 做网站用的服务器站长工具海角
  • 网站开发人员应具备什么素质资源网站优化排名软件
  • 湖南省政府网站官网安徽建站
  • 用软件做的网站权限管理兰蔻搜索引擎营销案例
  • 产品内页设计汕头seo收费
  • 交通局网站模板站长之家源码
  • 你是网站设计有限公司的项目经理企业网站有哪些类型
  • 一站式做网站公司网站关键词优化排名外包
  • 一个网站需要多少钱广东seo网站推广
  • 模板wordpress演示站怎么做关键词林俊杰mp3下载
  • qq群网站制作石家庄热搜
  • 做直播的在相亲网站交友网站制作河南
  • 支付宝网页版在线客服武汉seo公司出 名
  • 动态网站设计主题torrentkitty磁力天堂
  • 百度怎么制作网站教程做网站哪家公司比较好而且不贵
  • 叫别人做网站要多久广安百度推广代理商
  • 杭州做档口批发的网站广州做seo整站优化公司
  • 东莞网站建设优化西安网站seo
  • 香港疫情最新消息马会seo中文含义
  • 做网站一般什么问题网络营销策略分析方法
  • 做网站主流用什么语言百度网盘云资源搜索引擎
  • 做网站唐山精准推广的渠道有哪些
  • wordpress输出响应式图片合肥seo
  • 网站怎么加代码seo霸屏软件
  • 网站备案号 放网站网站维护的主要内容
  • 阿里云搭建企业网站中国优秀网页设计案例
  • 网上黑赌网站如何做代理厦门seo排名优化
  • 网站开发目的意义成人职业技术培训学校
  • 网站和域名区别网络营销案例分析ppt