题目来源于知识星球—英雄算法联盟,五月算法集训专题
目录
前言
跟随英雄算法联盟博主—英雄哪里出来,每天完成相应的算法练习,一个月后,必定会有所成长!
一、1290.二进制链表转整数(简单)
1.题目描述
2.解题思路
每读取链表的一个节点值,可以认为是当前二进制数的最低位,当读到下一个节点值
时,需要将已读到的结果乘2,再将新读到的节点值当作当前二进制数的最低位,如
此循环,直到链表的末尾。
3.代码演示(C++)
class Solution
{
public:
int getDecimalValue(ListNode* head)
{
int sum=0;
while(head)
{
sum=sum*2+head->val;
head=head->next;
}
return sum;
}
};
4.题目链接
二、237.删除链表中的节点(简单)
1.题目描述
2.解题思路
将给定节点的下一个节点的值赋值给给定节点,删除给定节点的下一个节点。
3.代码演示(C++)
class Solution
{
public:
void deleteNode(ListNode* node)
{
node->val=node->next->val;
node->next=node->next->next;
}
};
4.题目链接
三、剑指 Offer 24.反转链表(简单)
1.题目描述
2.解题思路
在遍历时,将当前节点的next指针改为指向前一个节点。实现存储其前一个节点。
在更改引用之前,还需要存储后一个节点,最后返回新的头引用。
3.代码演示(C++)
class Solution
{
public:
ListNode* reverseList(ListNode* head)
{
ListNode* prev = nullptr;
ListNode* curr = head;
while (curr)
{
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
};
4.题目链接
四、1019.链表的下一个更大节点(中等)
1.题目描述
2.解题思路
暂时还不会做
3.代码演示(C++)
4.题目链接
总结
每天跟随英雄哥学习相关的算法,一个月会收获很多,如果你想了解更多关于知识星球的内容,欢迎联系我!