抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

最近隔了几天没更新博客,因为最近刷的题觉得没什么价值写。 不过好在今天遇到一道题,动态规划与二进制特征结合在一起特别妙。 原题 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。 原题链接 思路 最简单的想法就是一个个数字数过去。 因为要多次调用数二进制1个数这个功能,所...

正常操作 正常交换两个整数我们需要创建一个临时变量。 12345int a = 1, b = 2;int temp;temp = b;b = a;a = temp; temp变量用于保存b的值,避免被覆盖,最后赋值给a。 异或操作 但通过异或操作,我们可以不需要创建额外的临时变量来交换两个整数。 异或操作见原文链接 代码 1234int a = 1, b = 2;a = a ^ b;b...

看上去越基础的题,背后越有大道理。 背景 日常刷Leetcode题遇到一个很基础的题目。 原题链接 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 进阶:你能够不使用循环/递归解决此问题吗? 思路 正常想法就是一直mod 2和除以2判断是否是2的幂次方。 但看到这个进阶,Easy题必要达到好吗。 题目跟2的幂次方有关,计算机又...

最近刷题经常使用到哈希表。 哈希表 官方定义: 哈希表是根据关键码的值而直接进行访问的数据结构。 数组其实就是一张最基础的哈希表。 它的下标数字作为键(key)对应一个值(value)。 比如: a[key] = value; 键不能相同,但值可以相同。 哈希表可以用来快速检索一个元素。 比如我们拿学生的名字作为键(key),ta所在的宿舍作为值(key)。 我们要查询一个学生在哪个宿...

数组 我们都知道访问数组的一个元素可以通过下标访问。 例如 123456int a[5] = { 1,2,3,4,5 }; //初始化printf("%d %d", a[0], a[1]);-----output:1 2 通过下标我们访问了数组a的第0个和第1个元素。 但是数组的下标访问本质是编程语言的一个语法糖。 数组的本质是开辟一串连续的空间用...

主题问题 最近使用hexo的volantis主题。 好看是好看,但它的资源cdn都在unpkg上。 最近发现unpkg国内无法访问了,导致图标、图片什么的都都失效。qwq 设置了使用jsdelivr(国内能正常访问),但似乎并不起作用。 要不换一个不依赖unpkg的主题? 尝试了Star最高的Next主题。 但感觉实在太丑,用不下去。再加上waline评论系统时不时会出错。 还是放弃了Ne...

开始 前几天使用数据恢复软件恢复了一批word文档(大概2k个),但是有些文档已经被损坏了,完全打不开。 用word修复工具能修复吗?抱着这样的想法尝试了市面上大部分的修复工具。 结果都修复失败。 这个时候尝试看看原始数据? 用一款开源的软件imhex 直接查看这些文档的16进制数据。 ![Alt text] 好好好,就剩个文件路径了是吧。损坏成这样只有神笔马良能修复了。 这种文件已...

当要求空间复杂度为O(1),即只使用常量额外空间时,快慢指针对于处理链表中删除重复值和判断是否有环尤为重要。 快慢指针也可称为龟兔赛跑算法。 定义一个快指针,一个慢指针,它们的移动速度是不同的,根据这个速度差,我们就能完成一些工作了。 删除重复值 例题 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 思考 首先这个链表是有...

二叉搜索树是有序的。 它可以完成搜索,插入以及删除等操作。 搜索 例题 思考 因为二叉搜索树有以下几个性质。 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜索树。 所以它的搜索效率就跟二分搜索一样很快。 使用迭代法很快就能写出来。 代码 12345678910TreeN...

本来觉得这题很简单的。但看了条件之后发现还真挺难想(压根想不到位操作) 原题链接 注意条件!! 线性时间 & 常量额外空间 思考 1. 暴力解法。 取一个数记为 cur ,然后从剩下的数中查找,如果找不到,则 cur 即为要找的那个数。 双层循环,时间复杂度O(n^2)。 不满足线性时间。 2. 哈希表 直接用unordered_set<int, int>作哈...