小工具知识网

当前位置: 首页 > 行业知识 > 【LeetCode】替换空格&&消失的数字&&分割链表&&除自身以外数组的乘积

行业知识

【LeetCode】替换空格&&消失的数字&&分割链表&&除自身以外数组的乘积

2026-11-09 16:02:52 来源:互联网转载

​�� 作者:@阿亮joy.

专栏:《阿亮爱刷题》

座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根

目录

    • 替换空格
    • 消失的数字
      • 思路一
      • 思路二
      • 分隔链表
      • 除自身以外数组的乘积
      • 总结

        替换空格

        请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

        示例 1:

        输入:s = "We are happy."

        输出:"We%20are%20happy."

        限制:

        • 0 int len = strlen(s); int spaceCount = 0;//统计空格的个数 int i = 0; for(i = 0; i next = cur; smallTail = cur; } else { bigTail->next = cur; bigTail = cur; } cur = cur->next; } bigTail->next = NULL; smallTail->next = bigHead->next; struct ListNode* ret = smallHead->next; free(smallHead); free(bigHead); return ret;}

          除自身以外数组的乘积

          给你一个整数数组 nums,返回数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

          题目数据保证数组 nums 之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

          请不要使用除法,且在 O(n) 时间复杂度内完成此题。

          示例 1:

          输入: nums = [1,2,3,4]

          输出: [24,12,8,6]

          示例 2:

          输入: nums = [-1,1,0,-3,3]

          输出: [0,0,9,0,0]

          思路:定义left和right,利用一次for循环进行乘积,将每个位置左边的数据和右边的数据乘积计算出来放到返回数组中,循环结束后将结果返回。

          int* productExceptSelf(int* nums, int numsSize, int* returnSize){    int* result=(int*)malloc(sizeof(int)*numsSize);    int left=1,right=1;//left:从左边累乘,right:从右边累乘    for(int i=0;i        result[i]=1;    }    for(int i=0;i        result[i] *= left;//乘以其左边的乘积        left  *= nums[i];//左边的数的乘积        result[numsSize-1-i] *= right;//乘以其左边的乘积        right *= nums[numsSize-1-i];//右边的数的乘积    }    *returnSize=numsSize;    return result;}

上一篇:日历待办事项管理功能详解,如何实现高效日程规划与管理?

下一篇:【MySQL】MySQL中查询JSON字段的实战指南