力扣704. 二分查找python3
时间: 2023-11-09 12:58:23 浏览: 81
力扣704题是二分查找的经典题目。下面是一个使用Python3实现的示例代码:
```python
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
相关问题
力扣662. 二叉树最大宽度题C语言答案
以下为力扣662. 二叉树最大宽度题的C语言答案:
```
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
typedef struct Queue {
struct TreeNode *node;
int index;
} Queue;
int widthOfBinaryTree(struct TreeNode* root){
if (root == NULL) {
return 0;
}
Queue *queue = (Queue*)malloc(sizeof(Queue));
int head = 0, tail = 0, max_width = 0;
queue[tail++] = (Queue){root, 1};
while (head < tail) {
int size = tail - head;
int left = queue[head].index, right = queue[head + size - 1].index;
max_width = fmax(max_width, right - left + 1);
for (int i = 0; i < size; i++) {
Queue node = queue[head++];
if (node.node->left != NULL) {
queue[tail++] = (Queue){node.node->left, node.index * 2};
}
if (node.node->right != NULL) {
queue[tail++] = (Queue){node.node->right, node.index * 2 + 1};
}
}
}
free(queue);
return max_width;
}
```
这个答案使用了队列来进行层序遍历,同时记录每个节点在当前层的编号,使用这个编号来计算宽度。具体实现上使用了一个结构体来存储节点和编号的信息,使用两个指针来实现队列的功能。时间复杂度为O(n),空间复杂度为O(n)。
力扣 977. 有序数组的平方 js
这是一个关于有序数组的平方的问题。给定一个按非递减顺序排序的整数数组,你需要返回每个数字的平方,并按非递减顺序返回新的数组。
下面是一个使用 JavaScript 解决该问题的示例代码:
```javascript
var sortedSquares = function(nums) {
// 创建一个新数组用于存放平方后的结果
var result = [];
var left = 0; // 左指针
var right = nums.length - 1; // 右指针
// 从数组两端开始遍历
while (left <= right) {
var leftSquare = nums[left] * nums[left];
var rightSquare = nums[right] * nums[right];
// 判断左右指针所指元素的平方大小,将较大的平方值添加到结果数组中
if (leftSquare > rightSquare) {
result.unshift(leftSquare);
left++;
} else {
result.unshift(rightSquare);
right--;
}
}
return result;
};
```
通过上述代码,在给定的有序数组上进行双指针遍历,每次取左右指针所指元素的平方,将较大的平方值从结果数组的头部插入。最终返回按非递减顺序排列的平方结果数组。
希望能够帮助到你!如果有任何疑问,请随时提出。