习题练习07

tech2022-12-13  84

X的平方根

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4 输出: 2

示例 2:

输入: 8 输出: 2

说明:

8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。

/** * @param {number} x * @return {number} */ var mySqrt = function(x) { if(x === 0 || x=== 1) return x let low = 0 let high =## 标题 x let mid let qr while(low < high) { mid = Math.floor(low + (high - low)/2) qr = mid * mid if(qr === x) return mid if(qr < x && (mid + 1)*( mid + 1) > x) return mid //这里要判断mid下一位的平方是否会比给定的阿平方数大 if(qr > x) { high = mid -1 }else { low = mid + 1 } } return low //最后返回low必然没错,因为是舍弃小数点往小取整数 };

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。

1 阶 + 1 阶2 阶

示例 2:

输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。

1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶 /** * @param {number} n * @return {number} */ var climbStairs = function(n) { const dp = []; dp[0] = 1; dp[1] = 1; for(let i = 2; i <= n; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n]; };

删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2 输出: 1->2

示例 2:

输入: 1->1->2->3->3 输出: 1->2->3

/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @return {ListNode} */ var deleteDuplicates = function(head) { var cur = head; while(cur && cur.next) { if(cur.val == cur.next.val) { cur.next = cur.next.next; } else { cur = cur.next; } } return head; };
最新回复(0)