答主大二,这学期刚开了数据结构与算法的课程,但课堂上只提及基础的增删改查,远远不能满足对数据结构相对熟悉的需求,因而答主便有了‘每日算法’专题练习的想法,有需要的可以共同练习,与君共勉
适用人群:数据结构与算法初学者
题型大多来自leetcode
一.3月30日
1.需求
请判断一个链表是否为回文链表。
示例 1: 输入: 1->2 输出: false
示例 2: 输入: 1->2->2->1 输出: true
2.思路分析
- 回文链表即将链表的后半部分反转后和前半部分数据一致
- 链表无法从后边开始遍历,因此可以考虑使用数组,将链表元素依次赋给数组,
- 遍历数组,比较对应位置的元素
3.伪代码演示
/**
* Definition for singly-linked list.
* struct ListNode {//声明链表节点
* int val;
* struct ListNode *next;
* };
*/
bool isPalindrome(struct ListNode* head){
int a[200000] ;/声明一个数组
int i=0;
while(head){
//将链表元素依次赋给数组
a[++i]=head->val;
head=head->next;
}
for(int y=1;