class Solution {
public int pivotInteger(int n) {
int left = 1, right = n;
double sum = (1+n)*n/2.0;
while (left <= right) {
int mid = (right - left) / 2 + left;
double tmp = (1+mid)*mid/2.0;
if (tmp*2 == sum+mid) {
return mid;
} else if (tmp*2 < sum+mid) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
}
class Solution {
public int appendCharacters(String s, String t) {
int i = 0, j = 0, cnt = 0;
while (i < s.length() && j < t.length()) {
while (i < s.length() && s.charAt(i) != t.charAt(j)) {
i++;
}
if (i < s.length() && s.charAt(i) == t.charAt(j)) {
cnt++;
i++;
j++;
}
}
if (j == t.length()) {
return 0;
}
return t.length() - cnt;
}
}
class Solution {
public ListNode removeNodes(ListNode head) {
ListNode demo = new ListNode(0);
demo.next = head;
ListNode h = demo;
ListNode cur = head;
while (cur.next != null) {
if (cur.val >= cur.next.val) {
demo = cur;
cur = cur.next;
} else {
ListNode d = h;
ListNode c = h.next;
while (c.val >= cur.next.val) {
d = c;
c = c.next;
}
d.next = cur.next;
demo = d;
cur = cur.next;
}
}
return h.next;
}
}
```