链表有环判断,快慢指针两种方法/合并链表/删除重复元素/二分递归和while
public static boolean hasCycle(ListNode head) {
if (head == null || head.next == null) {
return false;
}
ListNode slow = head;
ListNode fast = head.next;
while (slow != fast) {
if (slow.next == null)
return false;
slow = slow.next;
if (fast.next == null)
return false;
if (fast.next.next == null)
return false;
fast = fast.next.next;
}
return true;
}
public static boolean hasCycle1(ListNode head) {
if (head == null || head.next == null) {
return false;
}
ListNode slow = head;
ListNode fast = head.next;
while (fast.next != null) {
if (slow == fast) {
return true;
}
slow = slow.next;
if (fast.next.next == null){
return false;
}
fast = fast.next.next;
}
return false;
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode result = new ListNode(0);
ListNode head1 = l1;
ListNode head2 = l2;
ListNode resultPoint = result;
while (head1 != null && head2 != null) {
if (head1.val <= head2.val) {
ListNode currNode1 = new ListNode(head1.val);
resultPoint.next = currNode1;
resultPoint = resultPoint.next;
head1 = head1.next;
} else {
ListNode currNode2 = new ListNode(head2.val);
resultPoint.next = currNode2;
resultPoint = resultPoint.next;
head2 = head2.next;
}
}
if (head1 != null) {
resultPoint.next = head1;
}
if (head2 != null) {
resultPoint.next = head2;
}
return result.next;
}
}
public static ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode pre = head;
ListNode curr = head.next;
while (curr != null) {
if (curr.val == pre.val) {
pre.next = curr.next;
} else {
pre = pre.next;
}
curr = curr.next;
}
return head;
}
public static boolean binarySearchDigui(int[] array, int start, int end, int val){
if (start >= end) {
return false;
}
int mid = start + (end - start) / 2;
if (val < array[mid]) {
return binarySearchDigui(array, start, mid, val);
} else if (val > array[mid]){
return binarySearchDigui(array, mid + 1, end, val);
} else {
return true;
}
}
public static boolean binarySearchWhile(int[] array, int start, int end, int val){
while (start < end) {
int mid = start + (end - start) / 2;
if (val < array[mid]) {
end = mid;
} else if (val > array[mid]){
start = mid + 1;
} else {
return true;
}
}
return false;
}
链表有环判断,快慢指针两种方法/合并链表/删除重复元素/二分递归和while的更多相关文章
- 合并BIN文件的两种方法(转)
源:http://blog.chinaunix.net/uid-20745340-id-1878803.html 合并BIN文件的两种方法 在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一 ...
- 【java基础 13】两种方法判断hashmap中是否形成环形链表
导读:额,我介绍的这两种方法,有点蠢啊,小打小闹的那种,后来我查了查资料,别人都起了好高大上的名字,不过,本篇博客,我还是用何下下的风格来写.两种方法,一种是丢手绢法,另外一种,是迷路法. 这两种方法 ...
- Delphi Windows API判断文件共享锁定状态(OpenFile和CreateFile两种方法)
一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)
QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- php如何防止图片盗用/盗链的两种方法
如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方 ...
- C#实现Dll(OCX)控件自动注册的两种方法 网上找的 然后 自己试了试 还是可以用的
尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候,我们通常会通 ...
- 【代码笔记】iOS-判断中英文混合的字符长度的两种方法
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
随机推荐
- 廖雪峰Java2面向对象编程-6Java核心类-5枚举类
直接定义常量 public class Weekday { //定义int常量 public static final int SUN = 0; public static final int MON ...
- 廖雪峰Java1-3流程控制-3条件判断
1.if条件判断的格式 if (条件) { 代码块 } if (条件) { 代码块1 } else { 代码块2 } if (条件1) { 代码块1 } else if { 代码块2 } else { ...
- Ring0 - 链表
//一般驱动层不使用数据结构,一般Ring3层 双向链表可以将链表形成一个环.BLINK指针指向前一个元素,FLINK指针指向下一个元素.typedef struct _LIST_ENTRY { st ...
- MFC 控件使用教程
combo box控件用法: 下拉选择控件,首先将控件拖动到你需要使用控件的地方,用ClassWizard为它关联一个变量,我们注意到变量类型是CString型的.右击属性,General中可以设置一 ...
- tesseract-ocr4.0 安装部署及训练验证码识别
1. 下载最新版本的leptonica, leptonica-1.74.1.tar.gz 2. 编译安装 tar -zxvf leptonica-.tar.gz cd leptonica- . ...
- mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令
转: mongodb安装方法: https://blog.csdn.net/heshushun/article/details/77776706 mongodb检测安装成功 .以及增删改 ...
- Jmeter(一)简介以及环境搭建
刚刚在打扫卫生的时候,就一直在思考近一年以来所学知识及体系.知识太过于碎片化,整理的东西全写在笔记本上,日常工作不可能全部用到,所以复习很重要.因此开始准备将一些知识写在随笔里边,用于知识体系的重建, ...
- [UE4]保存游戏数据
新建一个继承自“SaveGame”的蓝图.
- gulp 使用案例
1.gulp 配置: // 引入 gulp var gulp = require('gulp'); var watch = require('gulp-watch'), //导入所有gulp需要的模块 ...
- 值得收藏的45个Python优质资源
REST API:使用 Python,Flask,Flask-RESTful 和 Flask-SQLAlchemy 构建专业的 REST API https://www.udemy.com/rest- ...