目录
第1题:搜索插入位置
第2题:外观数组
第3题:最大子序和
第4题:最后一个单词的长度
第5题:加一
第6题:二进制求和
第7题:求平方根
第8题:爬楼梯
第9题:删除排序链表中的重复元素
第10题:合并两个有序数组
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:搜索插入位置试题要求如下:
回答(C语言):
int searchInsert(int* nums, int numsSize, int target){
int num=0;
if(numsSize0){
num+=len_a>0?a[--len_a]-'0':0;
num+=len_b>0?b[--len_b]-'0':0;
if(num==0){
num=0;
buf[--len_long]='0';
}
else if(num==1){
num=0;
buf[--len_long]='1';
}
else if(num==2){
num=1;
buf[--len_long]='0';
}
else if(num==3){
num=1;
buf[--len_long]='1';
}
}
if(buf[0]=='0')
return buf+1;
else
return buf;
}
第7题:求平方根
试题要求如下:
回答(C语言):
int mySqrt(int x){
//牛顿迭代法
long r = x;
while(r * r > x)
{
r = (r + x / r) / 2;//迭代
}
return (int)r;
}
第8题:爬楼梯
试题要求如下:
回答(C语言),算法说明:
int climbStairs(int n){
if (n == 1) {
return 1;
}
int *dp=(int *)malloc(sizeof(int)*(n+1));
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i next && p->val == p->next->val)
{
q = p->next;
p->next = q->next;
free(q);
}
p = p->next;
}
return head;
}
第10题:合并两个有序数组
试题要求如下:
回答(C语言):
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int p = m + n;
m--;
n--;
while (n >= 0 && m >= 0) {
nums1[--p] = nums1[m] = 0) {
nums1[--p] = nums2[n--];
}
}