力扣(LeetCode)刷题,简单题(第2期)
【摘要】 目录
第1题:搜索插入位置
第2题:外观数组
第3题:最大子序和
第4题:最后一个单词的长度
第5题:加一
第6题:二进制求和
第7题:求平方根
第8题:爬楼梯
第9题:删除排序链表中的重复元素
第10题:合并两个有序数组
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:...
目录
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:搜索插入位置
试题要求如下:

回答(C语言):
-
int searchInsert(int* nums, int numsSize, int target){
-
int num=0;
-
-
if(numsSize<=0)
-
return 0;
-
-
for(int i=0,j=1;i<numsSize;i++,j++){
-
if(target<nums[0]){
-
num=0;
-
break;
-
}
-
else if(target>nums[numsSize-1]){
-
num=numsSize;
-
break;
-
}
-
else{
-
if(nums[i]==target) {
-
num=i;
-
break;
-
}
-
if(target>nums[i] && target<nums[j]){
-
num=j;
-
break;
-
}
-
}
-
}
-
-
return num;
-
}
第2题:外观数组
试题要求如下:

回答(C语言):
-
char * countAndSay(int n){
-
-
if(n==1)
-
return "1";
-
-
char *s=countAndSay(n-1);
-
-
char *a=(char *)malloc(5000);
-
char *ans=(char *)malloc(5000);
-
-
int count=0;
-
int l=strlen(s);
-
int j=0;
-
for(int i=0;i<l;i++){
-
if(i == 0 || s[i]==s[i-1])
-
count++;
-
else{
-
a[j++]='0'+count;
-
a[j++]=s[i-1];
-
count=1;
-
}
-
if (i == l - 1) {
-
a[j++]='0'+count;
-
a[j++]=s[i];
-
}
-
}
-
-
a[j]='\0';
-
ans = a;
-
return ans;
-
}
第3题:最大子序和
试题要求如下:

回答(C语言):
-
int maxSubArray(int* nums, int numsSize){
-
int max = nums[0];
-
int b = 0;
-
for(int i = 0; i < numsSize; i++){
-
b += nums[i];
-
if(b > max) max = b;
-
if(b < 0) b = 0;
-
}
-
return max;
-
}
第4题:最后一个单词的长度
试题要求如下:

回答(C语言):
-
int lengthOfLastWord(char * s){
-
int num=strlen(s);
-
int len=0;
-
-
if(num<=0)
-
return 0;
-
-
//重后往前,若有空格,则去掉空格
-
//若全为空格则返回0
-
while(s[--num]==' '){
-
if(num==0){
-
return 0;
-
}
-
}
-
-
while(num>=0){
-
if(s[num--]==' ')
-
break;
-
len++;
-
}
-
-
return len;
-
}
第5题:加一
试题要求如下:

回答(C语言):
-
int* plusOne(int* digits, int digitsSize, int* returnSize){
-
-
int *buf=(int *)malloc((digitsSize + 1) * sizeof (int));
-
-
for(int i=digitsSize-1;i>=0;i--){
-
if(digits[i]+1==10){
-
digits[i]=0;
-
}
-
else{
-
digits[i]+=1;
-
returnSize[0]=digitsSize;
-
return digits;
-
}
-
}
-
-
buf[0]=1;
-
for(int i=0,j=1;i<digitsSize;i++,j++)
-
buf[j]=digits[i];
-
-
returnSize[0]=digitsSize+1;
-
return buf;
-
}
第6题:二进制求和
试题要求如下:

回答(C语言):
-
char * addBinary(char * a, char * b){
-
int num=0,len_a=strlen(a),len_b=strlen(b),len_long=0;
-
-
if(len_a>=len_b){
-
len_long=len_a+2;
-
}
-
else{
-
len_long=len_b+2;
-
}
-
-
char *buf=(char *)malloc(sizeof(char)*(len_long)) ;
-
buf[--len_long]='\0';
-
buf[0]='0';
-
-
while(len_long>0){
-
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 <= n; i++) {
-
dp[i] = dp[i - 1] + dp[i - 2];
-
}
-
-
return dp[n];
-
}
第9题:删除排序链表中的重复元素
试题要求如下:

回答(C语言):
-
/**
-
* Definition for singly-linked list.
-
* struct ListNode {
-
* int val;
-
* struct ListNode *next;
-
* };
-
*/
-
-
struct ListNode* deleteDuplicates(struct ListNode* head){
-
struct ListNode * p = head;
-
struct ListNode * q;
-
-
while(NULL != p)
-
{
-
while(NULL != p->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] <= nums2[n] ? nums2[n--] : nums1[m--];
-
}
-
-
while (n >= 0) {
-
nums1[--p] = nums2[n--];
-
}
-
}
文章来源: handsome-man.blog.csdn.net,作者:不脱发的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:handsome-man.blog.csdn.net/article/details/104121667
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)