1. 程式人生 > 其它 >連結串列元件 分隔連結串列 設計連結串列 字串中不同整數的數目

連結串列元件 分隔連結串列 設計連結串列 字串中不同整數的數目

817. 連結串列元件

Set set = new HashSet<>();
for(int i :nums) {
set.add(i);
}
int ans = 0;
while(head != null) {
if(set.contains(head.val)) {找到了元件
while(head != null && set.contains(head.val)) {
head = head.next;得移出現在這個元件才行
}
ans++;
}else {
head = head.next;
}
}
return ans;


725. 分隔連結串列

int len = 0;
ListNode llen = head;
while(llen != null) {
len++;
llen = llen.next;
}
int ben = len / k;
int yu = len % k;
ListNode[] ans = new ListNode[k];
ListNode cur = head;
for(int i = 0; i < k && cur != null; i++) {
ans[i] = cur;
int leng = ben + (i < yu ? 1 : 0);只前幾個多一點


for(int j = 0; j < leng - 1; j++) {
cur = cur.next;因為第一個節點已經包含了
}
ListNode next = cur.next;
cur.next = null;
cur = next;
}
return ans;


707. 設計連結串列

int size;
ListNode head;
public MyLinkedList() {
size = 0;
head = new ListNode(0);
}

public int get(int index) {
    if(index < 0 || index >= size) return -1;
    ListNode cur = head;
    for(int i = 0; i <= index; i++) {
        cur = cur.next;
    }
    return cur.val;
}

public void addAtHead(int val) {
    addAtIndex(0, val);**//已經包含了size++**
    //size++;我跳
}

public void addAtTail(int val) {
    addAtIndex(size, val);**//已經包含了size++**
    //size++;我跳
}

public void addAtIndex(int index, int val) {
    if(index > size) return ;
    size++;
    index = Math.max(0, index);
    ListNode cur = head;
    for(int i = 0; i < index; i++) {
        cur = cur.next;
    }
    ListNode now = new ListNode(val);
    now.next = cur.next;
    cur.next = now;
}

public void deleteAtIndex(int index) {
    if(index < 0 || index >= size) return ;
    size--;
    ListNode cur = head;
    for(int i = 0; i < index; i++) {
        cur = cur.next;
    }
    cur.next = cur.next.next;
}

1805. 字串中不同整數的數目

Set set = new HashSet<>();
for(int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
if(c < 58) {//因為0是48
int j = i;
while(j < word.length() && word.charAt(j) < 58) j++;
while(i < word.length() && word.charAt(i) == 48) i++;
set.add(word.substring(i, j));
i = j;
}
}
return set.size();