场景:
刷题
问题描述:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
解法一:
三个指针就可以
思路参考:
https://leetcode-cn.com/problems/reverse-linked-list/solution/shi-pin-jiang-jie-die-dai-he-di-gui-hen-hswxy/
public static ListNode reverseList(ListNode head) {
ListNode pp=null;
ListNode p=head;
while(p!=null) {
ListNode pNext=p.next;//生成一个指向p的后一个节点的pNext
p.next=pp;//p的next为pp
pp=p;//pp后移
p=pNext;//p后移
}
head=pp;//头指针指向最后一个元素
return head;
}
运行效果
测试
//结点类
public class ListNode {
int val;
ListNode next;
ListNode() {};
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
//测试
----------------------------------------------------------------------------------------------------
public class Test {
public static void main(String[] args) {
ListNode list = new ListNode();
ListNode n2 = new ListNode(0,null);
ListNode n1 = new ListNode(1,n2);
list.next=n1;
System.out.println(getDecimalValue(list));;
}
public static int getDecimalValue(ListNode head) {
ListNode p=new ListNode();
p=head;//将头结点的值也加进去
String str="";
while(p!=null) {
str+=p.val;
p=p.next;
}
// System.out.println(str);
//二进制字符串转换为十进制数
int res = Integer.parseInt(str,2);
return res;
}
}
------------------------------------------------------------------------------------------------------
//输出结果
5
4
3
2
1