JS一发过
/**
* @param {number[]} nums
* @return {number[]}
*/
var exchange = function(nums) {
let arr = [];
for(let i =0;i<nums.length;i++){
if((nums[i]&1)==0){
arr.push(nums[i]);
}else{
arr.unshift(nums[i]);
}
}
return arr;
};
时间复杂度和空间复杂度都是On,但莫名排名很低,仅超过15%。。。。
JS 2分钟一发过
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var getKthFromEnd = function(head, k) {
let num = 1;
let num2 = 1;
let temp = head;
while(temp.next){
num++;
temp=temp.next;
}
let resNum = num-k+1;
while(resNum!=num2){
head=head.next;
num2++;
}
return head;
};
不想用递归,递归的想法是到底之后开始找k,k找到了就返回当前head,没有实践。
我的做法就是先找长度计算出第几个再找,好理解,也蛮快的91%
空间和时间都是On
JS双指针做法
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var getKthFromEnd = function(head, k) {
let fast = head;
let slow = head;
let n = 0;
while(fast){
fast=fast.next;
n++;
if(n>k){
slow = slow.next;
}
}
return slow;
};