一:判断根结点是否等于子结点之和
题目:乐扣链接
代码:
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var checkTree = function(root) {
return root.val === (root.left.val + root.right.val)
};
二:删除有序数组中的重复项
题目:乐扣链接
思路:
双指针指向同一个数组
快指针用来扫描,找到非重复的元素
慢指针用来指向可覆盖的位置
代码一
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
if(nums.length === 0){
return 0
}
let slow=1
for(let fast = 1; fast < nums.length; fast++){
if(nums[fast] !== nums[fast - 1]){
nums[slow] = nums[fast]
++slow
}
}
return slow
};
代码二(官方答案):
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
const n = nums.length
if(n === 0){
return 0
}
let fast = 1, slow = 1;
while(fast < n){
if(nums[fast] !== nums[fast -1]){
nums[slow] = nums[fast]
++slow
}
++fast
}
return slow
};
三:合并两个有序链表
题目:乐扣链接
代码一:
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function(list1, list2) {
if(list1 === null){
return list2
}else if(list2 === null){
return list1
}else if(list1.val < list2.val){
list1.next = mergeTwoLists(list1.next, list2)
return list1
}else {
list2.next = mergeTwoLists(list1, list2.next)
return list2
}
};
四:数组中的第K个最大元素
题目:
说明:
此题最终的目的是考察排序。
插入排序:将末排序的元素一个一个地插入到有序的集合中,插入时把所有有序集合从后往前扫一遍,找到合适的位置插入。
在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。
知识点:sort()排序,快速排序。
代码一:
* @param {number} k
* @return {number}
*/
var findKthLargest = function(nums, k) {
insertSort(nums)
let ans = nums.splice(k-1, 1)
return ans
};
var insertSort = function(nums){
let j
for(let i = 1;i < nums.length; i++){
let cur = nums[i]
for(j = i;j >= 1;j--){
if(nums[j - 1] < cur){
nums[j] = nums[j - 1]
}else{
break
}
}
nums[j] = cur
}
}
代码二:
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function(nums, k) {
function func(a,b){
return b - a
}
let array = nums.sort(func)
let ans = array.splice(k-1, 1)
return ans
};