- 博客(22)
- 收藏
- 关注
原创 codeforces976:A(贪心)
这里的7里面有6可以凑成3的二次方的。然后n/=k,n就变成了需要多少个k的一次方。然后的n%k,只要满k个,就不要加进去。第一次是处理需要多少个k的0次方。如果k是1,那么就只要n次。比如n=22,k=3。
2024-10-05 21:54:12 187
原创 【力扣】:比特位计数
1.去掉二进制中最左边的1,n&(n-1),如果一次操作以后,就是0,那么这个数是2的倍数。进行几次操作,,变为0,那么就有几个1.3.将x位改为0,~(1<<x)&n。4,x位改为1,1<<x|n.2.拿到最左边的1,n&-n。
2024-07-25 08:44:50 441
原创 牛客网:约瑟夫问题(链表)
总共有n个节点,所以要调用n次BuyNode函数,我们先定义第一个节点(可以认为就是头节点),然后第一个节点的val为1,后面的n-1个节点我们通过for循环申请,每次ptail记得变为ptail->next。首先pcur在节点一的位置,此时报数为1(count),count记录报数,然后我们进行移动,pcur=pcur->next,当count==m时,我们应该杀了这个人,也就是释放了这个节点。当pcur->next=pcur,表明只剩下一个节点,这就是我们要找的节点,返回pcur->val。
2024-04-14 20:48:28 572 20
原创 LeetCode: 203.移除链表元素(c语言,单链表)
2.再while循环中,我们申请了一块空间,作为头节点,这就是带头的单向链表了,这么做的目的是,我们可以在while循环中,不用去判空,即不用去判断NewHead和NewTail为NULL。避免如果要多次判空带来的重复代码。3.最后,我们不知道NewTail里的next指针是不是为空,那么我们就应该去把NewTail->next=NULL,防止他指向其他结点。1.如果head一开始就是NULL,那么直接返回head.
2024-04-11 16:57:45 530 1
原创 寻找独一无二的数-------PTA
也就是说,除了那个只出现一次的数字以外,其他数字异或以后为0,最后再与只出现一次的数异或,就得到了这个数。题中说,只有一个数字出现了一次,其他的都出现了两次。两个相同的数异或以后,得到0。先看看题目,我画出关键的信息。二进制异或(^)的顶级应用。
2024-04-04 00:45:21 268
原创 最大最小公倍数----蓝桥杯
3.当n为奇数,则n与(n-1)互质,(n-1)与(n-2)互质,再判断n与(n-2)是否互质,因为n与(n-1)都是是奇数,这两个数相差2,奇数不能整除2,根据条件2,整除3就更不可能了,n与(n-1)才相差2。相邻两个数差1,假如两个数a,b不互质,公约数为2,则a,b都能整除2,所以2/a,2/b,最小相差1,则a,b最小相差2。所以大于2的连续的两个数相差1,一定互质。1.寻找三个互质的数,就是最大的最小公倍数。2.当n>=2,相邻两个数互质。
2024-03-31 10:54:52 233
原创 关于我在学链表的过程中,一个小问题把我搞懵了一个小时的问题
然后我就再次去思考,为什么在已经有几个节点的情况下,我们只需要用一级指针就可以去改变节点里面的next指针。while循环结束时,ptail是最后一个节点的位置,我们用ptail->next=newnode,相当于我们对ptail进行解引用,然后确确实实指向了next指针,我们就可以去改变next指针,相当于(*ptail).next=newnode;在尾插函数(SLTPushBack)中,都是认为已经存在至少一个节点,但是我们在尾插的时候,也是可以在NULL后面插入一个新节点;所以就去考虑用二级指针;
2024-03-30 00:38:59 236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人