leecode更新
This commit is contained in:
parent
9dff74dcd8
commit
cc16a1c70c
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.markilue.leecode.array.second;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@BelongsProject: Leecode
|
||||||
|
*@BelongsPackage: com.markilue.leecode.array.second
|
||||||
|
*@Author: dingjiawen
|
||||||
|
*@CreateTime: 2022-12-23 10:16
|
||||||
|
*@Description:
|
||||||
|
*TODO 二次做209题 长度最小的子数组:
|
||||||
|
* 给定一个含有 n 个正整数的数组和一个正整数 target 。
|
||||||
|
* 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
|
||||||
|
*@Version: 1.0
|
||||||
|
*/
|
||||||
|
public class T03_MinSubArrayLen {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test(){
|
||||||
|
int target = 7;
|
||||||
|
int[] nums = {2, 3, 1, 2, 4, 3};
|
||||||
|
System.out.println(minSubArrayLen(target,nums));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test1(){
|
||||||
|
int target = 7;
|
||||||
|
int[] nums = {1, 7, 7};
|
||||||
|
System.out.println(minSubArrayLen(target,nums));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test2(){
|
||||||
|
int target = 7;
|
||||||
|
int[] nums = {1, 1, 1};
|
||||||
|
System.out.println(minSubArrayLen(target,nums));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 思路:构造一个滑动窗口一直往后滑,滑动窗口刚好小于等于target
|
||||||
|
* @param target
|
||||||
|
* @param nums
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int minSubArrayLen(int target, int[] nums) {
|
||||||
|
|
||||||
|
int start=0;//窗口的开始
|
||||||
|
int windowSum=0;//窗口数值总和
|
||||||
|
int result=Integer.MAX_VALUE;
|
||||||
|
|
||||||
|
for (int end = 0; end < nums.length; end++) {
|
||||||
|
windowSum+=nums[end];
|
||||||
|
while (windowSum>=target){
|
||||||
|
result=Math.min(result,end-start+1);
|
||||||
|
windowSum-=nums[start];
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result==Integer.MAX_VALUE?0:result;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
package com.markilue.leecode.array.second;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@BelongsProject: Leecode
|
||||||
|
*@BelongsPackage: com.markilue.leecode.array.second
|
||||||
|
*@Author: dingjiawen
|
||||||
|
*@CreateTime: 2022-12-23 10:30
|
||||||
|
*@Description:
|
||||||
|
* TODO 二次做59题 螺旋数组II:
|
||||||
|
* 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix
|
||||||
|
*@Version: 1.0
|
||||||
|
*/
|
||||||
|
public class T04_generateMatrix {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test(){
|
||||||
|
int n=5;
|
||||||
|
int[][] result = generateMatrix(n);
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
System.out.println(Arrays.toString(result[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本质上就是寻找循环不变量
|
||||||
|
* @param n
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int[][] generateMatrix(int n) {
|
||||||
|
|
||||||
|
int[][] result = new int[n][n];
|
||||||
|
int count = 1;
|
||||||
|
|
||||||
|
//转几圈
|
||||||
|
for (int i = 0; i < n / 2; i++) {
|
||||||
|
//从左往右;从上到下;从右往左;从下上到上;
|
||||||
|
int leftIndex = i;
|
||||||
|
int rightIndex = i;
|
||||||
|
for (; rightIndex < n - i-1; rightIndex++) {
|
||||||
|
result[leftIndex][rightIndex] = count++;
|
||||||
|
}
|
||||||
|
for (; leftIndex < n - i-1; leftIndex++) {
|
||||||
|
result[leftIndex][rightIndex] = count++;
|
||||||
|
}
|
||||||
|
for (; rightIndex > i; rightIndex--) {
|
||||||
|
result[leftIndex][rightIndex] = count++;
|
||||||
|
}
|
||||||
|
for (; leftIndex > i; leftIndex--) {
|
||||||
|
result[leftIndex][rightIndex] = count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(n%2==1){
|
||||||
|
result[n/2][n/2]=count;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.markilue.leecode.listnode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@BelongsProject: Leecode
|
||||||
|
*@BelongsPackage: com.markilue.leecode.listnode
|
||||||
|
*@Author: dingjiawen
|
||||||
|
*@CreateTime: 2022-12-23 10:52
|
||||||
|
*@Description: TODO 链表基础接口
|
||||||
|
*@Version: 1.0
|
||||||
|
*/
|
||||||
|
public class ListNode {
|
||||||
|
|
||||||
|
public int val;
|
||||||
|
public ListNode next;
|
||||||
|
|
||||||
|
public ListNode(){}
|
||||||
|
public ListNode(int val){
|
||||||
|
this.val=val;
|
||||||
|
}
|
||||||
|
public ListNode(int val,ListNode next){
|
||||||
|
this.val=val;
|
||||||
|
this.next=next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -19,7 +19,6 @@ public class ListNodeUtils {
|
||||||
int[] nodeList= {2, 4, 3};
|
int[] nodeList= {2, 4, 3};
|
||||||
ListNode root = build(nodeList);
|
ListNode root = build(nodeList);
|
||||||
print(root);
|
print(root);
|
||||||
// print();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,6 +27,7 @@ public class ListNodeUtils {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ListNode build(int[] nodeList){
|
public static ListNode build(int[] nodeList){
|
||||||
|
if(nodeList.length==0||nodeList==null)return null;
|
||||||
ListNode root =new ListNode(nodeList[0]);
|
ListNode root =new ListNode(nodeList[0]);
|
||||||
ListNode temp=root;
|
ListNode temp=root;
|
||||||
for (int i = 1; i < nodeList.length; i++) {
|
for (int i = 1; i < nodeList.length; i++) {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import org.junit.Test;
|
||||||
* 移除链表元素:
|
* 移除链表元素:
|
||||||
* 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
|
* 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
|
||||||
*/
|
*/
|
||||||
public class RemoveElement {
|
public class T01_RemoveElement {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -22,11 +22,11 @@ import org.junit.Test;
|
||||||
* obj.addAtIndex(index,val);
|
* obj.addAtIndex(index,val);
|
||||||
* obj.deleteAtIndex(index);
|
* obj.deleteAtIndex(index);
|
||||||
*/
|
*/
|
||||||
public class MyLinkedList {
|
public class T02_MyLinkedList {
|
||||||
|
|
||||||
public ListNode head;
|
public ListNode head;
|
||||||
|
|
||||||
public MyLinkedList() {
|
public T02_MyLinkedList() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -163,7 +163,7 @@ public class MyLinkedList {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test(){
|
public void test(){
|
||||||
MyLinkedList linkedList = new MyLinkedList();
|
T02_MyLinkedList linkedList = new T02_MyLinkedList();
|
||||||
linkedList.addAtHead(1);
|
linkedList.addAtHead(1);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
@ -185,7 +185,7 @@ public class MyLinkedList {
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void test1(){
|
public void test1(){
|
||||||
MyLinkedList linkedList = new MyLinkedList();
|
T02_MyLinkedList linkedList = new T02_MyLinkedList();
|
||||||
linkedList.addAtHead(7);
|
linkedList.addAtHead(7);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -231,7 +231,7 @@ public class MyLinkedList {
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void test2(){
|
public void test2(){
|
||||||
MyLinkedList linkedList = new MyLinkedList();
|
T02_MyLinkedList linkedList = new T02_MyLinkedList();
|
||||||
linkedList.addAtHead(2);
|
linkedList.addAtHead(2);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -269,7 +269,7 @@ public class MyLinkedList {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test3(){
|
public void test3(){
|
||||||
MyLinkedList linkedList = new MyLinkedList();
|
T02_MyLinkedList linkedList = new T02_MyLinkedList();
|
||||||
linkedList.addAtHead(1);
|
linkedList.addAtHead(1);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -22,13 +22,13 @@ import org.junit.Test;
|
||||||
* obj.addAtIndex(index,val);
|
* obj.addAtIndex(index,val);
|
||||||
* obj.deleteAtIndex(index);
|
* obj.deleteAtIndex(index);
|
||||||
*/
|
*/
|
||||||
public class MyLinkedList1 {
|
public class T02_MyLinkedList1 {
|
||||||
|
|
||||||
//该head为虚拟节点,不存放任何数据
|
//该head为虚拟节点,不存放任何数据
|
||||||
public ListNode head;
|
public ListNode head;
|
||||||
public int size;
|
public int size;
|
||||||
|
|
||||||
public MyLinkedList1() {
|
public T02_MyLinkedList1() {
|
||||||
head = new ListNode(0);
|
head = new ListNode(0);
|
||||||
size = 0;
|
size = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +122,7 @@ public class MyLinkedList1 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
||||||
MyLinkedList1 linkedList = new MyLinkedList1();
|
T02_MyLinkedList1 linkedList = new T02_MyLinkedList1();
|
||||||
linkedList.addAtHead(1);
|
linkedList.addAtHead(1);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
@ -145,7 +145,7 @@ public class MyLinkedList1 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test1() {
|
public void test1() {
|
||||||
MyLinkedList1 linkedList = new MyLinkedList1();
|
T02_MyLinkedList1 linkedList = new T02_MyLinkedList1();
|
||||||
linkedList.addAtHead(7);
|
linkedList.addAtHead(7);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -192,7 +192,7 @@ public class MyLinkedList1 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test2() {
|
public void test2() {
|
||||||
MyLinkedList1 linkedList = new MyLinkedList1();
|
T02_MyLinkedList1 linkedList = new T02_MyLinkedList1();
|
||||||
linkedList.addAtHead(2);
|
linkedList.addAtHead(2);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -230,7 +230,7 @@ public class MyLinkedList1 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test3() {
|
public void test3() {
|
||||||
MyLinkedList1 linkedList = new MyLinkedList1();
|
T02_MyLinkedList1 linkedList = new T02_MyLinkedList1();
|
||||||
linkedList.addAtHead(1);
|
linkedList.addAtHead(1);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -254,7 +254,7 @@ public class MyLinkedList1 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test4() {
|
public void test4() {
|
||||||
MyLinkedList1 linkedList = new MyLinkedList1();
|
T02_MyLinkedList1 linkedList = new T02_MyLinkedList1();
|
||||||
linkedList.addAtHead(4);
|
linkedList.addAtHead(4);
|
||||||
printList(linkedList.head);
|
printList(linkedList.head);
|
||||||
|
|
||||||
|
|
@ -295,19 +295,3 @@ public class MyLinkedList1 {
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
class ListNode {
|
|
||||||
public int val;
|
|
||||||
public ListNode next;
|
|
||||||
|
|
||||||
public ListNode() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public ListNode(int val) {
|
|
||||||
this.val = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ListNode(int val, ListNode next) {
|
|
||||||
this.val = val;
|
|
||||||
this.next = next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -10,7 +10,7 @@ import org.junit.Test;
|
||||||
* @Description: TODO leecode第206题,翻转链表:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
|
* @Description: TODO leecode第206题,翻转链表:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
|
||||||
* @Version: 1.0
|
* @Version: 1.0
|
||||||
*/
|
*/
|
||||||
public class ReverseList {
|
public class T03_ReverseList {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
package com.markilue.leecode.listnode.second;
|
||||||
|
|
||||||
|
|
||||||
|
import com.markilue.leecode.listnode.ListNode;
|
||||||
|
import com.markilue.leecode.listnode.ListNodeUtils;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@BelongsProject: Leecode
|
||||||
|
*@BelongsPackage: com.markilue.leecode.listnode.second
|
||||||
|
*@Author: dingjiawen
|
||||||
|
*@CreateTime: 2022-12-23 10:50
|
||||||
|
*@Description:
|
||||||
|
* TODO 二刷 力扣203题 移除链表元素:
|
||||||
|
* 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
|
||||||
|
*@Version: 1.0
|
||||||
|
*/
|
||||||
|
public class T01_RemoveElement {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test(){
|
||||||
|
int[] head={1,2,6,3,4,5,6};
|
||||||
|
int val=6;
|
||||||
|
ListNode root = ListNodeUtils.build(head);
|
||||||
|
ListNodeUtils.print(removeElements(root, val));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test1(){
|
||||||
|
int[] head={};
|
||||||
|
int val=6;
|
||||||
|
ListNode root = ListNodeUtils.build(head);
|
||||||
|
ListNodeUtils.print(removeElements(root, val));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test2(){
|
||||||
|
int[] head={6,6,6,6,6};
|
||||||
|
int val=6;
|
||||||
|
ListNode root = ListNodeUtils.build(head);
|
||||||
|
ListNodeUtils.print(removeElements(root, val));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 速度击败51.77%,内存击败20.51% 1ms
|
||||||
|
* @param head
|
||||||
|
* @param val
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ListNode removeElements(ListNode head, int val) {
|
||||||
|
ListNode root =new ListNode();
|
||||||
|
root.next=head;
|
||||||
|
|
||||||
|
ListNode temp=root;
|
||||||
|
|
||||||
|
while (temp.next!=null){
|
||||||
|
while (temp.next!=null&&temp.next.val==val){
|
||||||
|
temp.next=temp.next.next;
|
||||||
|
}
|
||||||
|
if(temp.next!=null){
|
||||||
|
temp=temp.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return root.next;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 官方题解中最快:看起来比本人快在少了一个判断,但是对于头结点的处理不如本人
|
||||||
|
* 0ms
|
||||||
|
* @param head
|
||||||
|
* @param val
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ListNode removeElements1(ListNode head, int val) {
|
||||||
|
//删除值为val的头结点
|
||||||
|
while(head!=null && head.val == val){
|
||||||
|
head = head.next;
|
||||||
|
}
|
||||||
|
//传入空节点或所有结点都被删除,返回null
|
||||||
|
if(head == null)return null;
|
||||||
|
//用cur表示可能要删除的节点的前序节点
|
||||||
|
ListNode cur = head;
|
||||||
|
|
||||||
|
while(cur.next != null){
|
||||||
|
//删除元素后,未遍历的新节点cur.next的前序节点还是cur
|
||||||
|
if(cur.next.val == val){
|
||||||
|
cur.next = cur.next.next;
|
||||||
|
//仅当cur.next.val != val时,才能遍历下1个节点
|
||||||
|
}else{
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据官方题解的修改:
|
||||||
|
* 0ms
|
||||||
|
* @param head
|
||||||
|
* @param val
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ListNode removeElements2(ListNode head, int val) {
|
||||||
|
ListNode root =new ListNode();
|
||||||
|
root.next=head;
|
||||||
|
|
||||||
|
ListNode temp=root;
|
||||||
|
|
||||||
|
while (temp.next!=null){
|
||||||
|
//改为if以后少判断一次,因为近来就会判断一次
|
||||||
|
if (temp.next.val==val){
|
||||||
|
temp.next=temp.next.next;
|
||||||
|
}else {
|
||||||
|
temp=temp.next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return root.next;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,259 @@
|
||||||
|
package com.markilue.leecode.listnode.second;
|
||||||
|
|
||||||
|
import com.markilue.leecode.listnode.ListNode;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import javax.print.DocFlavor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@BelongsProject: Leecode
|
||||||
|
*@BelongsPackage: com.markilue.leecode.listnode.second
|
||||||
|
*@Author: dingjiawen
|
||||||
|
*@CreateTime: 2022-12-23 11:20
|
||||||
|
*@Description:
|
||||||
|
* TODO 二刷707题 设计链表:
|
||||||
|
* 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。
|
||||||
|
* val 是当前节点的值,next 是指向下一个节点的指针/引用。
|
||||||
|
* 如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。
|
||||||
|
* 假设链表中的所有节点都是 0-index 的。
|
||||||
|
* 在链表类中实现这些功能:
|
||||||
|
* get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
|
||||||
|
* addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
|
||||||
|
* addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
|
||||||
|
* addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
|
||||||
|
* deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。
|
||||||
|
*@Version: 1.0
|
||||||
|
*/
|
||||||
|
public class T02_MyLinkedList {
|
||||||
|
|
||||||
|
//创建的虚拟头结点
|
||||||
|
ListNode root;
|
||||||
|
int size;
|
||||||
|
|
||||||
|
public T02_MyLinkedList() {
|
||||||
|
this.root = new ListNode();
|
||||||
|
this.size=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int get(int index) {
|
||||||
|
if(index<0||index>size-1){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int find = 0;
|
||||||
|
ListNode temp = root.next;
|
||||||
|
while (find != index && temp != null) {
|
||||||
|
temp=temp.next;
|
||||||
|
find++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(find==index){
|
||||||
|
//找到了
|
||||||
|
return temp.val;
|
||||||
|
}else {
|
||||||
|
//找不到
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAtHead(int val) {
|
||||||
|
ListNode listNode = new ListNode(val);
|
||||||
|
listNode.next = root.next;
|
||||||
|
root.next = listNode;
|
||||||
|
size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAtTail(int val) {
|
||||||
|
ListNode temp = root;
|
||||||
|
while (temp.next != null) {
|
||||||
|
temp = temp.next;
|
||||||
|
}
|
||||||
|
temp.next = new ListNode(val);
|
||||||
|
size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAtIndex(int index, int val) {
|
||||||
|
if(index<0){
|
||||||
|
addAtHead(val);
|
||||||
|
return;
|
||||||
|
}else if(index==size){
|
||||||
|
addAtTail(val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int find=0;
|
||||||
|
ListNode temp=root;
|
||||||
|
|
||||||
|
while (find!=index&&temp.next!=null){
|
||||||
|
temp=temp.next;
|
||||||
|
find++;
|
||||||
|
}
|
||||||
|
//找到就插了
|
||||||
|
if(find==index){
|
||||||
|
ListNode listNode = new ListNode(val);
|
||||||
|
listNode.next=temp.next;
|
||||||
|
temp.next=listNode;
|
||||||
|
size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteAtIndex(int index) {
|
||||||
|
if(index<0||index>size-1){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int find=0;
|
||||||
|
ListNode temp=root;
|
||||||
|
|
||||||
|
while (find!=index&&temp.next!=null){
|
||||||
|
temp=temp.next;
|
||||||
|
find++;
|
||||||
|
}
|
||||||
|
//找没找到都要插了
|
||||||
|
if(find==index){
|
||||||
|
temp.next=temp.next.next;
|
||||||
|
size--;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test(){
|
||||||
|
T02_MyLinkedList linkedList = new T02_MyLinkedList();
|
||||||
|
linkedList.addAtHead(1);
|
||||||
|
linkedList.addAtTail(3);
|
||||||
|
linkedList.addAtIndex(1,2); //链表变为1-> 2-> 3
|
||||||
|
System.out.println(linkedList.get(1));
|
||||||
|
linkedList.deleteAtIndex(1); //现在链表是1-> 3
|
||||||
|
System.out.println(linkedList.get(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test1(){
|
||||||
|
T02_MyLinkedList linkedList = new T02_MyLinkedList();
|
||||||
|
linkedList.addAtHead(1);
|
||||||
|
linkedList.addAtTail(3);
|
||||||
|
linkedList.addAtIndex(3,2); //链表变为1-> 2-> 3
|
||||||
|
System.out.println(linkedList.get(1));
|
||||||
|
linkedList.deleteAtIndex(-1); //现在链表是1-> 3
|
||||||
|
System.out.println(linkedList.get(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 双向队列
|
||||||
|
*/
|
||||||
|
class MyLinkedList {
|
||||||
|
int size;
|
||||||
|
BiListNode head;
|
||||||
|
BiListNode tail;
|
||||||
|
|
||||||
|
public MyLinkedList() {
|
||||||
|
size = 0;
|
||||||
|
head = new BiListNode(0);
|
||||||
|
tail = new BiListNode(0);
|
||||||
|
head.next = tail;
|
||||||
|
tail.prev = head;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int get(int index) {
|
||||||
|
if (index < 0 || index >= size) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
BiListNode curr;
|
||||||
|
//看看用头开始快还是用尾开始快
|
||||||
|
if (index + 1 < size - index) {
|
||||||
|
curr = head;
|
||||||
|
for (int i = 0; i <= index; i++) {
|
||||||
|
curr = curr.next;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
curr = tail;
|
||||||
|
for (int i = 0; i < size - index; i++) {
|
||||||
|
curr = curr.prev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return curr.val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAtHead(int val) {
|
||||||
|
addAtIndex(0, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAtTail(int val) {
|
||||||
|
addAtIndex(size, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAtIndex(int index, int val) {
|
||||||
|
if (index > size) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
index = Math.max(0, index);
|
||||||
|
BiListNode pred, succ;
|
||||||
|
if (index < size - index) {
|
||||||
|
pred = head;
|
||||||
|
for (int i = 0; i < index; i++) {
|
||||||
|
pred = pred.next;
|
||||||
|
}
|
||||||
|
succ = pred.next;
|
||||||
|
} else {
|
||||||
|
succ = tail;
|
||||||
|
for (int i = 0; i < size - index; i++) {
|
||||||
|
succ = succ.prev;
|
||||||
|
}
|
||||||
|
pred = succ.prev;
|
||||||
|
}
|
||||||
|
size++;
|
||||||
|
BiListNode toAdd = new BiListNode(val);
|
||||||
|
toAdd.prev = pred;
|
||||||
|
toAdd.next = succ;
|
||||||
|
pred.next = toAdd;
|
||||||
|
succ.prev = toAdd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteAtIndex(int index) {
|
||||||
|
if (index < 0 || index >= size) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BiListNode pred, succ;
|
||||||
|
if (index < size - index) {
|
||||||
|
pred = head;
|
||||||
|
for (int i = 0; i < index; i++) {
|
||||||
|
pred = pred.next;
|
||||||
|
}
|
||||||
|
succ = pred.next.next;
|
||||||
|
} else {
|
||||||
|
succ = tail;
|
||||||
|
for (int i = 0; i < size - index - 1; i++) {
|
||||||
|
succ = succ.prev;
|
||||||
|
}
|
||||||
|
pred = succ.prev.prev;
|
||||||
|
}
|
||||||
|
size--;
|
||||||
|
pred.next = succ;
|
||||||
|
succ.prev = pred;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class BiListNode {
|
||||||
|
int val;
|
||||||
|
BiListNode next;
|
||||||
|
BiListNode prev;
|
||||||
|
|
||||||
|
public BiListNode(int val) {
|
||||||
|
this.val = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Your MyLinkedList object will be instantiated and called as such:
|
||||||
|
* MyLinkedList obj = new MyLinkedList();
|
||||||
|
* int param_1 = obj.get(index);
|
||||||
|
* obj.addAtHead(val);
|
||||||
|
* obj.addAtTail(val);
|
||||||
|
* obj.addAtIndex(index,val);
|
||||||
|
* obj.deleteAtIndex(index);
|
||||||
|
*/
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.markilue.leecode.listnode.second;
|
||||||
|
|
||||||
|
import com.markilue.leecode.listnode.ListNode;
|
||||||
|
import com.markilue.leecode.listnode.ListNodeUtils;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@BelongsProject: Leecode
|
||||||
|
*@BelongsPackage: com.markilue.leecode.listnode.second
|
||||||
|
*@Author: dingjiawen
|
||||||
|
*@CreateTime: 2022-12-23 12:20
|
||||||
|
*@Description:
|
||||||
|
* TODO 二刷206题 反转链表:
|
||||||
|
* 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
|
||||||
|
*@Version: 1.0
|
||||||
|
*/
|
||||||
|
public class T03_ReverseList {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test(){
|
||||||
|
int[] head = {1, 2, 3, 4, 5 };
|
||||||
|
ListNode root = ListNodeUtils.build(head);
|
||||||
|
ListNodeUtils.print(reverseList(root));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test1(){
|
||||||
|
int[] head = {};
|
||||||
|
ListNode root = ListNodeUtils.build(head);
|
||||||
|
ListNodeUtils.print(reverseList(root));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListNode reverseList(ListNode head) {
|
||||||
|
ListNode root = new ListNode();
|
||||||
|
ListNode temp=head;
|
||||||
|
ListNode tt;
|
||||||
|
while (temp!=null){
|
||||||
|
tt=temp.next;
|
||||||
|
temp.next=root.next;
|
||||||
|
root.next=temp;
|
||||||
|
temp=tt;
|
||||||
|
}
|
||||||
|
return root.next;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,10 +7,10 @@ import numpy as np
|
||||||
import random
|
import random
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import seaborn as sns
|
import seaborn as sns
|
||||||
from condition_monitoring.data_deal.loadData import read_data
|
# from condition_monitoring.data_deal.loadData import read_data
|
||||||
from model.Joint_Monitoring.Joint_Monitoring_banda import Joint_Monitoring
|
# from model.Joint_Monitoring.Joint_Monitoring_banda import Joint_Monitoring
|
||||||
from model.Joint_Monitoring.compare.RNet_L import Joint_Monitoring as Joint_Monitoring_L
|
# from model.Joint_Monitoring.compare.RNet_L import Joint_Monitoring as Joint_Monitoring_L
|
||||||
from model.Joint_Monitoring.compare.RNet_S import Joint_Monitoring as Joint_Monitoring_SE
|
# from model.Joint_Monitoring.compare.RNet_S import Joint_Monitoring as Joint_Monitoring_SE
|
||||||
import tensorflow as tf
|
import tensorflow as tf
|
||||||
import tensorflow.keras
|
import tensorflow.keras
|
||||||
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
|
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
|
||||||
|
|
@ -467,15 +467,26 @@ def plot_FNR2(y_data):
|
||||||
x_width = range(0, len(y_data))
|
x_width = range(0, len(y_data))
|
||||||
# x2_width = [i + 0.3 for i in x_width]
|
# x2_width = [i + 0.3 for i in x_width]
|
||||||
|
|
||||||
plt.bar(x_width[0], y_data[0], lw=1, color=['#FAF4E1'], width=0.5 * 2 / 3, label="ResNet-18", edgecolor='black')
|
# plt.bar(x_width[0], y_data[0], lw=1, color=['#FAF4E1'], width=0.5 * 2 / 3, label="ResNet-18", edgecolor='black')
|
||||||
plt.bar(x_width[1], y_data[1], lw=1, color=['#F5E3C4'], width=0.5 * 2 / 3, label="RNet-1", edgecolor='black')
|
# # plt.bar(x_width[1], y_data[1], lw=1, color=['#F5E3C4'], width=0.5 * 2 / 3, label="RNet-1", edgecolor='black')
|
||||||
plt.bar(x_width[2], y_data[2], lw=1, color=['#EBC99D'], width=0.5 * 2 / 3, label="RNet-2", edgecolor='black')
|
# # plt.bar(x_width[2], y_data[2], lw=1, color=['#EBC99D'], width=0.5 * 2 / 3, label="RNet-2", edgecolor='black')
|
||||||
plt.bar(x_width[3], y_data[3], lw=1, color=['#FFC79C'], width=0.5 * 2 / 3, label="RNet-3", edgecolor='black')
|
# # plt.bar(x_width[3], y_data[3], lw=1, color=['#FFC79C'], width=0.5 * 2 / 3, label="RNet-3", edgecolor='black')
|
||||||
plt.bar(x_width[4], y_data[4], lw=1, color=['#D6E6F2'], width=0.5 * 2 / 3, label="RNet-12", edgecolor='black')
|
# plt.bar(x_width[4], y_data[4], lw=1, color=['#D6E6F2'], width=0.5 * 2 / 3, label="RNet-12", edgecolor='black')
|
||||||
plt.bar(x_width[5], y_data[5], lw=1, color=['#B4D1E9'], width=0.5 * 2 / 3, label="RNet-13", edgecolor='black')
|
# # plt.bar(x_width[5], y_data[5], lw=1, color=['#B4D1E9'], width=0.5 * 2 / 3, label="RNet-13", edgecolor='black')
|
||||||
plt.bar(x_width[6], y_data[6], lw=1, color=['#AEB5EE'], width=0.5 * 2 / 3, label="RNet-23", edgecolor='black')
|
# # plt.bar(x_width[6], y_data[6], lw=1, color=['#AEB5EE'], width=0.5 * 2 / 3, label="RNet-23", edgecolor='black')
|
||||||
|
# # plt.bar(x_width[7] + 2.0, y_data[10], lw=0.5, color=['#8085e9'], width=1, label="ResNet-18", edgecolor='black')
|
||||||
|
# # plt.bar(x_width[7], y_data[7], lw=1, color=['#D5A9FF'], width=0.5 * 2 / 3, label="ResNet-C", edgecolor='black')
|
||||||
|
# plt.bar(x_width[8], y_data[8], lw=1, color=['#E000F5'], width=0.5 * 2 / 3, label="JMNet", edgecolor='black')
|
||||||
|
|
||||||
|
plt.bar(x_width[0], y_data[0], lw=1, color=['#AEB5EE'], width=0.5 * 2 / 3, label="ResNet-18", edgecolor='black')
|
||||||
|
plt.bar(x_width[1], y_data[1], color=['#FFFFFF'], label=" ")
|
||||||
|
plt.bar(x_width[2], y_data[2], color=['#FFFFFF'], label=" ")
|
||||||
|
plt.bar(x_width[3], y_data[3], color=['#FFFFFF'], label=" ")
|
||||||
|
plt.bar(x_width[4], y_data[4],lw=1, color=['#D5A9FF'], width=0.5 * 2 / 3, label="RNet-C", edgecolor='black')
|
||||||
|
plt.bar(x_width[5], y_data[5], color=['#FFFFFF'], label=" ")
|
||||||
|
plt.bar(x_width[6], y_data[6], color=['#FFFFFF'], label=" ")
|
||||||
# plt.bar(x_width[7] + 2.0, y_data[10], lw=0.5, color=['#8085e9'], width=1, label="ResNet-18", edgecolor='black')
|
# plt.bar(x_width[7] + 2.0, y_data[10], lw=0.5, color=['#8085e9'], width=1, label="ResNet-18", edgecolor='black')
|
||||||
plt.bar(x_width[7], y_data[7], lw=1, color=['#D5A9FF'], width=0.5 * 2 / 3, label="ResNet-C", edgecolor='black')
|
plt.bar(x_width[7], y_data[7], color=['#FFFFFF'], label=" ")
|
||||||
plt.bar(x_width[8], y_data[8],lw=1, color=['#E000F5'], width=0.5 * 2 / 3, label="JMNet", edgecolor='black')
|
plt.bar(x_width[8], y_data[8],lw=1, color=['#E000F5'], width=0.5 * 2 / 3, label="JMNet", edgecolor='black')
|
||||||
|
|
||||||
# plt.tick_params(bottom=False, top=False, left=True, right=False, direction='in', pad=1)
|
# plt.tick_params(bottom=False, top=False, left=True, right=False, direction='in', pad=1)
|
||||||
|
|
@ -487,7 +498,8 @@ def plot_FNR2(y_data):
|
||||||
plt.xlabel('Methods', fontsize=22)
|
plt.xlabel('Methods', fontsize=22)
|
||||||
# plt.tight_layout()
|
# plt.tight_layout()
|
||||||
|
|
||||||
num1, num2, num3, num4 = 0.08, 1, 3, 0
|
# num1, num2, num3, num4 = 0.08, 1, 3, 0
|
||||||
|
num1, num2, num3, num4 = 0.15, 1, 3, 0
|
||||||
plt.legend(bbox_to_anchor=(num1, num2), loc=num3, borderaxespad=num4, ncol=5, frameon=False, handlelength=1,
|
plt.legend(bbox_to_anchor=(num1, num2), loc=num3, borderaxespad=num4, ncol=5, frameon=False, handlelength=1,
|
||||||
handletextpad=0.45, columnspacing=1)
|
handletextpad=0.45, columnspacing=1)
|
||||||
plt.ylim([0, 5])
|
plt.ylim([0, 5])
|
||||||
|
|
@ -785,6 +797,7 @@ if __name__ == '__main__':
|
||||||
# plot_FNR1(list)
|
# plot_FNR1(list)
|
||||||
# #
|
# #
|
||||||
list=[3.43,1.99,1.92,2.17,1.63,1.81,1.78,1.8,0.6]
|
list=[3.43,1.99,1.92,2.17,1.63,1.81,1.78,1.8,0.6]
|
||||||
|
list=[3.43,1.99,1.92,2.17,1.8,1.81,1.78,1.8,0.6]
|
||||||
plot_FNR2(list)
|
plot_FNR2(list)
|
||||||
|
|
||||||
# 查看网络某一层的权重
|
# 查看网络某一层的权重
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue