小白学Java
Java后端
·05-08 23:47
Day 102(5.6/5.7/5.8) ✅ 今天做了: 1. 力扣136,只出现一次的数字 2. 复习Mysql八股 3. 整理《万能视频总结器》项目开发文档:https://www.codefather.cn/post/2051997576365887489 4. 复习Java八股 5. 编写codefreex项目设计文档 6. 完成codefreex项目基本架构的搭建,基础用户服务,兑换码以及邀请码功能 ⏰ 明天计划: 1. 完成codefreex项目核心AI生成功能 📚 今日感悟: 力扣136,只出现一次的数字 1. 我的思路1:使用set集合,如果当前该数未存在set中,则加入集合,否则将该数从集合中移除,最后set集合中剩余的那个数即为目标值 `时间复杂度O(n),空间复杂度O(n)` 2. 我的思路2:对元素进行排序,然后从前往后进行遍历,如果前一个不等于后一个,这个数就是目标值 `时间复杂度O(nlogn),空间复杂度O(logn)` 3. 思路3:使用位运算,异或运算有如下性质:1)任何数和0做异或,结果仍是原来的数;2)和其自身做异或,结果是0;3)异或运算满足交换律和结合律。运用这三条性质可以将一个初始值为0的数依次与数组中元素进行异或运算,最终的结果就是只出现一次的数字 `时间复杂度O(n),空间复杂度O(1)`
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP