java判断一个单向链表是否有环路】的更多相关文章

今天刷LeetCode刷到一道这样的题,详情参见(https://leetcode-cn.com/problems/linked-list-cycle/) ADT: class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } } 方法一:循环遍历节点,遍历一个便标记一个,遍历过程判断是否被标记,若已被标记则表示有环 方法说明:头指针移动,若到达之前到达过的位置则表示有环,若无环则会走到链表末…
题目:给定一个单向链表,判断它是不是回文链表(即从前往后读和从后往前读是一样的).原题见下图,还要求了O(n)的时间复杂度O(1)的空间复杂度. 我的思考: 1,一看到这个题目,大脑马上想到的解决方案就是数组.遍历链表,用数组把数据存下来,然后再进行一次遍历,同时用数组反向地与之比较,这样就可以判断是否回文.这个方法时间复杂度是O(n),达到了要求,然而空间复杂度显然不满足要求.所以,开数组这一类的方法显然不是最佳的. 2,既然要满足O(1)的空间复杂度,我就想到了用一个变量来存储这些数据,恰好…
class Node { //当前节点 private String data; //下个节点 private Node next; //当前节点 public void setData(String data){ this.data=data; } public String getData(){ return this.data; } //下个节点 public void setNext(Node next){ this.next=next; } public Node getNext(){…
输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { public: LinkNode(int value = 0) : nValue(value){ pNext = NULL; } ~LinkNode() { pNext = NULL; } //private: friend class LinkList; int nValue; LinkNode *pNext; }…
第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;ListNode* m_pNext;}; 我的思路:先翻转链表,再从翻转后的链表的头向尾数k-1个,返回,再次翻转链表. 代码如下:注意这个思路非常差.差的原因是:如果只是用最原始的方法,先遍历一遍计数,再遍历一遍找倒数第k个,需要遍历两遍.但我的思路,翻转两次链表就要遍历两遍.还要在走k-1步找倒数第k…
在工作期间,将写内容过程经常用到的一些内容段做个记录,下面内容是关于Java判断一个字符是否是数字的几种方法的内容,希望能对码农们有好处. public class Test{ public static void main(String[] args) { char[] ch = { 'a', '1', 'b', '2', 'c', '3', 'd', '4', }; System.out.println(ch[0] + ": " + isDigitA(ch[0])); System…
Java判断一个字符串中有多少大写字母.小写字母和数字 思路: 大写字母就是A-Z之间,小写字母是a-z之间,数字就是0-9之间,于是做判断就好:用到的String知识点,遍历字符串, 长度方法length() 和转char数据类型的toCharArray()方法. 代码如下: import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("請輸入…
Java判断一个类里是否存在某个属性 测试pojo类,比方我有个User类 @Getter @Setter public class User { private Long id; private String name; private Integer age; private String email; } 我现在判断User是否存在某个属性 方式一.按照常理来说第一种办法肯定是通过反射拿到这个类的所有属性,循环遍历再去一一比较,这种办法是可行的,但是感觉这种方式不是太好. /** * 判断…
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,.等等是不能识别的. import java.util.regex.Pattern; public class CharUtil { public static void main(String[] args) { String[] strArr = new String[] { "www.m…
白杨 http://baiy.cn 在我几年前开始写<C++编码规范与指导>一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了.没想到时隔几年以后才有机会把这个尾巴补完 :-). 还是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准.想要做到这点,就必须要了解语言中每个特性的实现方式及其时空开销.异常处理由于涉及大量底层内容,向来是 C++ 各种高级机制中较难理解和透彻掌握的部分.本文将在尽量少引入底层细节的前提下,讨论 C++ 中这一…