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

【leetcode】环形链表、最长公共前缀

题目:环形链表

 解法一:哈希表

创建一个哈希表,遍历链表先判断哈希表中是否含有要放入哈希表中的节点,如果该节点已在哈希表中出现那么说明该链表是环形的;如果链表节点出现nullptr那么就退出循环,该链表是非环的。

时间复杂度:O(n)

空间复杂度:O(n)

class Solution {
public:bool hasCycle(ListNode *head) {unordered_set<ListNode*> hashtable;while(head){if(hashtable.count(head)) //先判断哈希表中是否有将要放入哈希表中的这个节点return true;hashtable.emplace(head);head = head->next;}return false;}
};

解法二:快慢指针

主要思路就是仿照龟兔赛跑,slow指针是龟,fast指针是兔(),如果是环形链表那么龟兔就会相遇(这个相遇肯定是兔套了龟若干圈.....)

时间复杂度:O(n)

空间复杂度:O(1)

class Solution {
public:bool hasCycle(ListNode *head) {if(nullptr == head)return false;ListNode* slow = head;ListNode* fast = head->next;while(fast){if(slow == fast){return true;}if(nullptr == fast->next){goto end;}else{fast = fast->next->next;}slow = slow->next;}end:return false;}
};

题目:最长公共前缀

解法一:遍历

对每个string字符串的字母按顺序一一判断,也就是简单遍历

时间复杂度:O(nm)

空间复杂度:O(1)

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {for(int i = 0;i<strs[0].size();++i) //以第一个字符串作为基准,也可以先选出长度最小的字符串,选不选其实都一样{for(int j = 1;j<strs.size();++j){if((i>strs[j].size()-1) || (strs[0][i] != strs[j][i]))return strs[0].substr(0,i);}}return strs[0];}
};

解法二:两两判断

两个字符串进行比较得到一个string对象ret(刚开始将ret定义为第一个字符串),ret就是这两个字符串的公共前缀,以此类推

时间复杂度:O(nm)

空间复杂度:O(m)

class Solution {
public://更新retstring updateret(string& ret,const string& str ){string tmp;for(int i = 0;i<ret.size();++i){if(ret[i] != str[i] || i>str.size()-1 )//当字符不相同/字符串长度长于return tmp;tmp.push_back(ret[i]);}return tmp;}string longestCommonPrefix(vector<string>& strs) {//解法二:两两比较string ret = strs[0];for(int i = 1;i<strs.size();++i){ret = updateret(ret,strs[i]);}return ret;}
};

http://www.lryc.cn/news/444953.html

相关文章:

  • C#开发记录如何建立虚拟串口,进行串口通信,以及通信模板
  • 电源设计的艺术:从底层逻辑到工程实践
  • 软媒市场新探索:软文媒体自助发布,开启自助发稿新篇章
  • 【Kubernetes】常见面试题汇总(二十七)
  • 基于单片机巡迹避障智能小车系统
  • Python163邮箱发送:提升发送效率的技巧?
  • springboot中的异步任务
  • Linux学习笔记8 理解Ubuntu网络管理,做自己网络的主人
  • 理解线程的三大特性:原子性、可见性和有序性
  • 英特尔®以太网网络适配器E810-CQDA1 / E810-CQDA2 网卡 规格书 e810 网卡 规格书 Intel100G E810 网卡 白皮书
  • 好用的idea方法分隔符插件
  • 通过 Xshell 无法连接到 Ubuntu
  • Java面试篇基础部分-Synchronized关键字详解
  • 数据结构之线性表——LeetCode:67. 二进制求和,27. 移除元素,26. 删除有序数组中的重复项
  • SQL_HAVING小例子
  • Avalonia第三方UI库Semi.Avalonia用法详解
  • 宠物智能化听诊器的健康管理!
  • MyBatis-Plus 实体类注解
  • 如何写一个自动化Linux脚本去进行等保测试--引言
  • 美团测开OC!
  • HyperWorks的实体几何创建与六面体网格剖分
  • 项目实战:Ingress搭建Nginx+WP论坛+MariaDB
  • UWA支持鸿蒙HarmonyOS NEXT
  • 【齐家网-注册/登录安全分析报告】
  • MyBatis 基本概念
  • 前端开发之装饰器模式
  • 【STL】pair 与 map:基础、操作与应用
  • 深度学习-图像处理篇4VGG网络
  • 初级css+初级选择器
  • gitlab 的CI/CD (二)