首页 > 编程语言 >四种语言刷算法之环形链表

四种语言刷算法之环形链表

时间:2023-04-17 10:45:57浏览次数:49  
标签:head ListNode 环形 next 链表 算法 return false NULL

力扣141. 环形链表

1、C

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    if(head==NULL||head->next==NULL)return false;
    struct ListNode* p = head->next;
    struct ListNode* q = p->next;
    while(p!=NULL && q!=NULL){
        if(p==q)return true;
        else{
            p = p->next;
            if(q->next==NULL)return false;
            else{
                q = q->next->next;
            }
        }
    }
    return false;
}

2、C++

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode *p = head;
        ListNode *q = head;
        while(p!=NULL&&q!=NULL){
            p = p->next;
            if(q->next!=NULL){
                q = q->next->next;
            }
            else{
                return false;
            }
            if(p==q){return true;}
        }
        return false;
    }
};

3、JAVA

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode *p = head;
        ListNode *q = head;
        while(p!=NULL&&q!=NULL){
            p = p->next;
            if(q->next!=NULL){
                q = q->next->next;
            }
            else{
                return false;
            }
            if(p==q){return true;}
        }
        return false;
    }
};

4、Python

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        p = head
        q = head
        while(p is not None and q is not None):
            p = p.next
            if(q.next is not None):
                q = q.next.next
            else:
                return False
            if(p==q):
                return True
        return False

标签:head,ListNode,环形,next,链表,算法,return,false,NULL
From: https://www.cnblogs.com/cmkbk/p/17308822.html

相关文章

  • 单双链表
    单链表定义//单链表publicstaticclassNode{publicintvalue;publicNodenext;publicNode(intdata){value=data;}}单链表反转新增1、2、3三个节点publicstaticNodereverseLinkedList(Nodehead){Nodepre=null;Nodenext=......
  • KMeans算法与GMM混合高斯聚类
    一、K-MeansK-Means是GMM的特例(硬聚类,基于原型的聚类)。假设多元高斯分布的协方差为0,方差相同。 K-Means算法思想对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。N个d维样本,时间复杂度O(kLNd)初始......
  • leetcode160-相交链表
    leetcode160方法一:哈希表思路:先创建一个unordered_set,存放ListNode*类型的变量先遍历其中一个链表,把所有节点的指针放在set中再遍历另一个链表,查找是否存在一个节点已经在set中,如果存在则说明这是它们的相交节点的指针,返回这个指针,如果不存在则说明不存在相交节点,......
  • m无线传感器网络WSN的时间同步捕获算法matlab仿真,对比单步捕获法,双步捕获法以及锯齿
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要2.1WSN同步概要       由于,信息传输和计算会消耗大量的能量,无线传感器网络中的节点都是由电池供电,能源有限,让节点长时间持续时间同步过程以达到极高精确度的时钟同步将导致极大......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性
    1、算法描述在数组中逐个查找元素,即遍历。2、上一篇文的实现结果在扎实打牢数据结构算法根基,从此不怕算法面试系列之003week0102-03代码实现线性查找法中,我们实现了如下代码:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音......
  • 实验一 密码引擎-4-国䀄算法交叉测试
    任务详情02人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名1在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图2在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)3在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash......
  • 界面重建——Marching cubes算法
    一、引子对于一个标量场数据,我们可以描绘轮廓(Contouring),包括2D和3D。2D的情况称为轮廓线(contourlines),3D的情况称为表面(surface)。他们都是等值线或等值面。以下是一个2D例子: 为了生成轮廓,必须使用某种形式的插值。这是因为我们只在数据集中的一个有限点集上有标量值,而我们......
  • Floyd算法注意事项
    注意事项:k层循环不能内置Floyd适用于求解全源最短路径问题,即对于给定的图G,求解任意两点之间的最短路径长度。模板#include<bits/stdc++.h>usingnamespacestd;constintN=105;intdis[N][N];voidFloyd(){ memset(dis,0x3f3f3f,sizeof(dis));//初始化为极大值 //......
  • # 密码引擎-4-国䀄算法交叉测试
    任务详情2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用O......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之001 week01 02-01 什么是算法?
    1、什么是算法?为了明确什么是算法,我们会从简单的查找功能开始讲起。查找其实一个一个非常简单的算法,但我们会为这个查找功能的算法做如下工作:让查找的功能适应更多的数据类型通过查找的例子讲解如何编写正确的程序?为查找算法性能测试对一些常见算法做复杂度分析2、定义......