35.探索插入的位置
JS
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
var l=0,r=nums.length-1;
while (l < r){
var mid = Math.floor((l+r)/2);
if (nums[mid] > target)
r = mid-1;
else if(nums[mid] < target)
l = mid+1;
else
return mid;
}
return nums[l] >= target ? l : l+1;
};
CPP
int searchInsert(vector<int>& nums, int target) {
int l = 0, r = nums.size();
while(l < r){
int mid = (r+l)/2;
if(nums[mid] >= target) r = mid;
else l = mid+1;
}
return r;
}
Python
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if target <= nums[0]:
return 0
if target>nums[len(nums)-1]:
return len(nums)
if target == nums[len(nums)-1]:
return len(nums)-1
i=0
for idx,i in enumerate(nums):
if target == i:
return idx
for i in range(0,len(nums)-1):
if nums[i]<=target and nums[i+1]>=target:
return i+1
C
int searchInsert(int* nums, int numsSize, int target){
int i,read_i=-1;
if(target>nums[numsSize-1])
return numsSize;
else if(target<nums[0])
return 0;
for(i=0;i<numsSize;i++)
if(target==nums[i])
read_i=i;
if(read_i<0){
for(i=0;i<numsSize-1;i++){
if(target>nums[i]&&target<nums[i+1])
read_i = i+1;
}
}
return read_i;
}
977.有序数组的平方
C
int* sortedSquares(int* nums, int numsSize, int* returnSize){
int i;
int* ans = (int*)malloc( numsSize * 4 );
if (ans){
for (i=0;i<numsSize;i++)
ans[i] = nums[i]*nums[i];
for (i=1; i<numsSize; i++){
int key = ans[i];
int j = i-1;
while (j>=0 && ans[j] > key){
ans[j+1] = ans[j];
j--;
}
ans[j+1] = key;
}
for (i=0;i<numsSize;i++) printf("%d ", ans[i]);
return ans;
}
else
return NULL;
}
CPP
vector<int> sortedSquares(vector<int>& nums) {
vector<int> ans;
for (int i=0;i<nums.size();i++){
ans.push_back(nums[i]*nums[i]);
}
sort(ans.begin(), ans.end());
return ans;
}
JAVA
int[] ans = new int[nums.length];
for (int i=0;i<nums.length;i++){
ans[i] = nums[i]*nums[i];
}
Arrays.sort(ans);
return ans;
}
Python
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
ans = []
for i in nums:
ans.append(i ** 2)
ans.sort()
return ans
Python3
def sortedSquares(self, nums: List[int]) -> List[int]:
ans:List[int] = []
for i in nums:
ans.append(i ** 2)
ans.sort()
return ans
JS
var sortedSquares = function(nums) {
let ans = new Array(nums.length);
for (let i=0;i<nums.length;i++)
ans[i] = nums[i] * nums[i]
ans.sort(function(a, b){return a-b;});
return ans;
};
198.转轮数组
C
void rotate(int* nums, int numsSize, int k){
if (k == 0)
return ;
int i,help[k];
int j=0;
if (numsSize <= k){
while (k--){
int m;
for (i=numsSize-1;i<numsSize;i++)
m = nums[i];
for (i=numsSize-1-1 ; i >= 0; i--)
nums[i+1] = nums[i];
nums[0] = m;
}
return ;
}
for (i=numsSize-k;i<numsSize;i++)
help[j++] = nums[i];
for (i=numsSize-k-1 ; i >= 0; i--)
nums[i+k] = nums[i];
for (i=0;i<k;i++)
nums[i] = help[i];
}
283.移动零
CPP
void moveZeroes(vector<int>& nums) {
stack<int> pos;
for (int i=0 ;i<nums.size(); i++)
if(nums[i] == 0)
pos.push(i);
int cnt = pos.size();
while (!pos.empty()) {
nums.erase(nums.begin() + pos.top());
pos.pop();
}
while (cnt--)
nums.push_back(0);
}
本文展示了几个与数组操作相关的算法问题,包括寻找目标值在有序数组中的插入位置,计算有序数组元素的平方并保持排序,以及如何旋转数组。这些算法涉及二分查找、排序和数组变换等技术。

674

被折叠的 条评论
为什么被折叠?



