当前位置: 首页 > 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.mrgr.cn/news/34687.html

相关文章:

  • 动态内存管理(c语言)
  • 图论-代码随想录刷题记录[JAVA]
  • Scala入门基础(17.1)Set集习题
  • Jmeter基础篇(22)服务器性能监测工具Nmon的使用
  • Python →爬虫实践
  • Linux git-bash配置
  • 注册建造师执业工程规模标准(市政公用工程)
  • 计算机毕业设计Hadoop+PySpark深圳共享单车预测系统 PyHive 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
  • Linux 压缩制定目录下指定类型的多个文件
  • YOLO V10简单使用
  • 0-1开发自己的obsidian plugin DAY 1
  • C++的哲学思想
  • iOS 顶级神器,巨魔录音机更新2.1正式版
  • 一看就会!PS2024下载安装教程详解
  • 在 Java 中,你如何实现不可变对象?不可变对象有哪些好处?
  • 【Godot4.3】三角形类
  • JS的链判断符有几种写法,有哪些用法?
  • # 深度学习笔记(9)huggingface 构建数据集
  • kubernetes网络(三)之bird的路由反射器的使用
  • 大数据新视界 --大数据大厂之 Reactjs 在大数据应用开发中的优势与实践
  • npm、yarn、pnpm 最新国内镜像源设置和常见问题解决
  • Axure精选各类组件案例集锦:设计灵感与实战技巧
  • 速盾:网页游戏部署高防服务器有什么优势?
  • Spring MVC 执行流程
  • FortiGate 硬盘格式化指南
  • C++11新特性和扩展(1)