当前位置: 首页 > wzjs >正文

网站建设报价单模板合肥百度关键词排名

网站建设报价单模板,合肥百度关键词排名,短视频app源码搭建,网站主页面设计第一题:160. 相交链表 - 力扣(LeetCode) 方法:假设公共部分长度为z,A的长度为az,B的长度为bz.当pa移动到了尾部,就让它为headB;当pb移动到了尾部,就让它是headA&#xff…

第一题:160. 相交链表 - 力扣(LeetCode)

方法:假设公共部分长度为z,A的长度为a+z,B的长度为b+z.当pa移动到了尾部,就让它为headB;当pb移动到了尾部,就让它是headA,然后继续往后移动。这样只要链表相交就一定会相遇,因为两个指针移动的长度都是a+b+z.

举个例子,A先跑200m,再跑600m,再跑400m。B先跑400m,再跑600m,再跑200m。只要AB二人速度一样,总会相遇。

先看一个错误示范:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution
{
public:ListNode* getIntersectionNode(ListNode* headA, ListNode* headB){if (headA == nullptr || headB == nullptr){return nullptr;}ListNode* pa = headA;ListNode* pb = headB;while (pa != pb){if (pa == nullptr) pa = headB;if (pb == nullptr) pb = headA;pa = pa->next;pb = pb->next;}return pa;}
};

错因:先赋值再移动。以pa为例子。pa为nullptr时,将headB赋值给它。但接着又执行pa=pa->next.如果交点是某个链表的头节点,那就有可能错过。

正确做法应该是先判断究竟是该移动还是该赋值:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution
{
public:ListNode* getIntersectionNode(ListNode* headA, ListNode* headB){if (headA == nullptr || headB == nullptr){return nullptr;}ListNode* pa = headA;ListNode* pb = headB;while (pa != pb){pa = (pa == nullptr ? headB : pa->next);pb = (pb == nullptr ? headA : pb->next);}return pa;}
};

第二题:反转链表206. 反转链表 - 力扣(LeetCode)

法一:双指针迭代

class Solution
{
public:ListNode* reverseList(ListNode* head){if (head == nullptr || head->next == nullptr) return head;ListNode* prev = nullptr;ListNode* curr = head;while (curr){ListNode* temp = curr->next;curr->next = prev;prev = curr;curr = temp;}return prev;}
};

法二:双指针递归?不知道这么叫是否准确,但是和法一差不多。一对一对往后推而已。

class Solution
{
public:ListNode* r(ListNode* prev, ListNode* curr){if (curr == nullptr) return prev;ListNode* temp = curr->next;curr->next = prev;return r(curr, temp);}ListNode* reverseList(ListNode* head){return r(nullptr,head);}
};

法三:递归

class Solution
{
public:ListNode* reverseList(ListNode* head){if (head == nullptr || head->next == nullptr) return head;ListNode* curr = reverseList(head->next);//cur为最后一个节点//此时head为倒数第二个节点head->next->next = head;head->next = nullptr;//避免循环//开始往前归return curr;}
};

第三题:234. 回文链表 - 力扣(LeetCode)

法一:最直接的方法,用一个数组存储链表节点的值,用双指针判断是否回文。

class Solution
{
public:bool check(vector<int>& vec){int n = vec.size();int left = 0, right = n - 1;while (left <= right){if (vec[left] != vec[right]) return false;left++, right--;}return true;}bool isPalindrome(ListNode* head){ListNode* curr = head;vector<int>vec;while (curr){vec.push_back(curr->val);curr = curr->next;}return check(vec);}
};

法二:找中点,反转后半部分。用快慢指针找中点。

长度为偶数:

设原链表为:1-> 2 -> 2 -> 1

处理后:1 -> 2 -> 2 <- 1

长度为奇数:

设原链表为:1 -> 3 -> 5 -> 3 -> 1

处理后:1 -> 3 -> 5 <- 3 <- 1

所以while循环的条件是head2不为nullptr

class Solution
{
public:ListNode* find_middle(ListNode* head){ListNode* slow = head, * fast = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;}return slow;}ListNode* reverseList(ListNode* head){if (head == nullptr || head->next == nullptr) return head;ListNode* prev = nullptr, * curr = head;while (curr) {ListNode* temp = curr->next;curr->next = prev;prev = curr;curr = temp;}return prev;}bool isPalindrome(ListNode* head){ListNode* mid = find_middle(head);ListNode* head2 = reverseList(mid);while (head2){if (head->val != head2->val) return false;head = head->next;head2 = head2->next;}return true;}
};

http://www.dtcms.com/wzjs/79793.html

相关文章:

  • 河南省建设工程标准定额管理网站b站免费建网站
  • 网站不用了 怎么关闭吗优化排名seo
  • 自己做视频网站会不会追究版权合肥seo公司
  • 珠海政府网站建设公司北大青鸟培训机构官网
  • 宣城网站开发网络公司北京最新疫情最新消息
  • 商洛网站制作网盘资源共享网站
  • 怎样做网站呢最佳搜索引擎
  • 网站制作评分标准长春seo网站排名
  • 沈阳品牌网站建设如何创建自己的网站平台
  • 房地产网站开发如何在百度上发布自己的文章
  • 莱芜网站建设公司网站关键词优化怎么弄
  • 成都个人网站建设百度付费推广
  • 云南专业网站建设百度pc网页版
  • 个人网站设计与开发电商平台推广公司
  • 卖游戏币网站制作搜索引擎广告图片
  • 免费的视频api接口关键词优化是怎么弄的
  • apache多网站配置网站怎么被收录
  • 网站建设经费方案品牌设计公司
  • 美的地产集团官方网站建设seo相关ppt
  • 企业官方网站模板下载域名查询服务器
  • 福建众利建设工程网站免费域名解析平台
  • 河北网站优化建设曼联vs恩波利比分
  • 网站公众平台建设方案太原seo团队
  • 直播引流推广方法关键词排名的排名优化
  • 补习吧 一家专门做家教的网站最新国际要闻
  • 固安建站公司seo网络营销技术
  • 商务网站建设网站seo推广多少钱
  • 做网站要偶数下载安装百度一下
  • 阿里云做电影网站短视频运营公司
  • 东昌府聊城网站建设网店推广软文范例