今天主要学习了栈(FILO),以及集合的相关内容
1、栈
package com.ma1;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
import javafx.print.Collation;
public class Main {
public static void main(String[] args) {
LinkedList<String> queue = new LinkedList<>();
queue.add("mayy");
queue.offer("guoxy");
System.out.println(queue.poll());
System.out.println(queue.remove());
System.out.println(queue.element());
}
public ArrayList<Integer> maxInWindows(int [] num, int size) {
ArrayList<Integer> result = new ArrayList<>();
LinkedList<Integer> window =new LinkedList<>();
for(int item : num) {
if(window.size() < size) {
window.add(item);
} else if(window.size() == size) {
window.poll();
window.add(item);
}
if(window.size() == size) {
result.add(Collections.max(window));
}
}
return result;
}
public int shortestSubarray (ArrayList<Integer> nums, int k) {
LinkedList<Integer> list = new LinkedList<>();
int sum = 0;
int minLen = -1;
for(int item : nums) {
if(sum < k) {
sum = sum + item;
list.add(item);
}
while(sum >= k) {
int successlen = list.size();
if(minLen == -1) {
minLen = successlen;
} else {
minLen = minLen < successlen ? minLen : successlen;
}
int first = list.pop();
sum = sum - first;
}
}
return minLen;
}
}
集合:
package com.ma1;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Set;
import java.util.TreeSet;
public class Test1 {
public static void main(String[] args) {
Set<Student> set = new HashSet<>();
set.add(new Student(99,100,"hahah","女认男"));
set.add(new Student(80,79,"xixixi","男转女"));
set.add(new Student(75,66,"Alex","摄像机"));
Student stu =new Student(100,44,"Fox","none");
set.add(stu);
Student[] stuArr =new Student[set.size()];
set.toArray(stuArr);
System.out.println(stuArr[0]);
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.add(100);
queue.add(1);
queue.add(110);
Integer[] arr = new Integer[queue.size()];
queue.toArray(arr);
for(int i = 0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
package com.ma1;
public class Student {
public int age;
public int num;
public String name;
public String gender;
public Student(int age,int num,String name,String gender) {
super();
this.age = age;
this.num = num;
this.name = name;
this.gender = gender;
}
public Student() {
}
@Override
public String toString() {
return "Student [age = " + age +",num = " + num +",name = " + name + ",gender = " + gender + "]";
}
public int compareTo(Student o) {
return this.age - o.age;
}
}
联系的相关习题:
例一:链表中环的入口结点
package com.ma1;
import java.util.HashSet;
import java.util.Set;
public class ListNode {
public static void main(String[] args) {
}
public ListNode EntryNodeOfLoop(ListNode pHead) {
Set<ListNode> set = new HashSet<>();
whlie(pHead != null){
int num = set.size();
set.add(pHead);
if(num == set.size()) {
return pHead;
}
pHead = pHead.next;
}
return null;
}
}
例二:数据流中的中位数
package com.ma1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
public class Fuu {
public int findMedianinTwoSortedAray (int[] arr1, int[] arr2) {
if(arr1.length == 0) {
return 0;
}
int firstIndex = 0;
int secondIndex = 0;
for(int i = 0;i<arr1.length-1; i++) {
if(arr1[firstIndex] > arr2[secondIndex]) {
secondIndex++;
} else {
firstIndex++;
}
}
return Integer.min(arr1[firstIndex], arr2[secondIndex]);
}
}
例三:移动0
public int[] moveZeroes (int[] nums) {
int [] result = new int[nums.length];
int index = 0;
for(int i= 0;i < nums.length; i++) {
if(nums[i] !=0) {
result[index] = nums[i];
index++;
}
}
return result;
}
例四:数据流中的中位数
package com.ma1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
import java.util.TreeSet;
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.Insert(5);
foo.Insert(2);
foo.Insert(3);
System.out.println(foo.GetMedian());
}
PriorityQueue<Integer> queue = new PriorityQueue<>();
public void Insert(Integer num) {
queue.add(num);
}
public Double GetMedian() {
List<Integer> list = new ArrayList<>();
list.addAll(queue);
Collections.sort(list);
return null;
}
}