题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

解题思路:遍历A树,找到一个与B树的根结点值相同的结点,开始同时遍历A、B树,判断对应结点上的值是否相同,直至遍历完B树,期间碰到A、B不同的值,则返回false。继续遍历A树,找下一个与B树根结点值相同的结点。

阅读全文 »

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路:创建一个新的链表头结点,比较两个链表的头结点值的大小,并将res->next指向值小的结点,直至有一个链表为空。之后合并剩下的非空链表即可。
代码:

阅读全文 »

题目:输入一个链表,反转链表后,输出新链表的表头。
解题思路:定义一个指针rev用于存储反转过的头结点,p用于指向还未反转的头结点,tmp指针用于存储p的下一结点。

阅读全文 »

题目:输入一个链表,输出该链表中倒数第k个结点。

解题思路:最直接的思路是,先遍历一遍链表,得出链表的长度,然后计算出倒数第k个结点的正数位置,之后二次遍历链表并输出结果。更好的解法是:设置快慢两个指针,快指针先走k步,然后慢指针开始走,当快指针遍历完链表的时候,慢指针所在的位置即为倒数第k个结点

阅读全文 »

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

解题思路:使用冒泡排序的思想,碰到前偶数后奇数,就交换二者的位置。内循环每完成一次,就有一个偶数被放到最末尾,下次内循环的结束位置就可以往前移动一位。

阅读全文 »

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。

解题思路:最直接的想法就是将base乘以exponent次,然而这种方法显然存在重复计算。考虑二进制数的表示形式,例如十进制下的13对应的二进制为1101,表示$13=1\times 2^0+0\times 2^1 + 1\times 2^2 + 1\times 2^3$,现在需要计算k的13次方,即$k^{13}=k^{1 + 4 + 8}=k^1\times k^4\times k^8$,为13对应二进制位上为1的$k^n$相乘,n为二进制1所在位置的十进制值。下表可表示此过程:

阅读全文 »

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

解题思路:对于一个二进制数减1,该数最右边的1变为0,最右边的1的右边若存在0,则变为1,例如:1110111000 - 1 = 1110110111。因此,一个数n与n-1做按位与运算,就能消去一个二进制1,循环直至n==0,即可得出n的二进制中1的个数。

阅读全文 »

题目:我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?

解题思路:覆盖一个大小为2xn的矩形,第一步若选择横放,那么下面的也只能横放;问题退化成f(n-2);若选择竖放,则问题退化为f(n-1) 。从而可以得到递推公式:f(n)=f(n-1)+f(n-2)

阅读全文 »

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路:跳上n级台阶的跳法,等于跳上前n-1级台阶的所有跳法之和,即:f(n) = f(n-1) + f(n-2) + … + f(0)。可以这样考虑问题,因为青蛙可以跳的台阶数是任意的,因此,跳上n级台阶可由台阶0、台阶1、台阶2、……、台阶n-1起跳。

阅读全文 »

需求:PyTorch中,固定某些层,只更新部分层的参数
方法:

1
2
3
4
5
for param in model.parameters():
param.requires_grad = False
for param in model.classifier_parameters():
param.requires_grad = True
optimizer = torch.optim.Adam(model.classifier_parameters(), lr=args.lr, weight_decay=1e-4)

注意:若是不设置param.requires_grad = False,直接在optimizer设置需要更新的参数,网络还是会计算所有参数的梯度,只是不更新网络的权重。设置param.requires_grad = False可以加快网络的运算速度,在将不需要更新参数的梯度设为False之后,在optimizer里面填写的是整个模型的参数或是仅有需要更新部分的参数。

阅读全文 »
0%