每日一题(4.20)

news/2024/9/23 6:27:47/

目录

  • Leecode-118-杨辉三角
    • 题目
    • 示例
    • 解题思路
    • 代码实现
  • Leecode-238-除自身以外数组的乘积
    • 题目
    • 示例
    • 解题思路
    • 代码实现

Leecode-118-杨辉三角

题目

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。
题目

示例

示例1

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例2

输入: numRows = 1
输出: [[1]]

解题思路

  1. 分配空间:根据numRows的值,为二维数组res分配空间,并初始化returnSize为numRows。同时,为returnColumnSizes分配空间,用于存储每一行的列数。

  2. 初始化第一行:杨辉三角的第一行总是只有一个元素1。因此,为res[0]分配一个整数的空间,并赋值为1。同时,设置returnColumnSizes[0]为1。

  3. 生成后续行:从第二行开始,遍历每一行。对于每一行i(从1开始),首先获取前一行i-1的数组m。然后,为新行i分配i+1个整数的空间,并初始化第一个和最后一个元素为1。接下来,通过遍历前一行m的元素,计算新行n的中间元素,每个元素n[j]都是m[j-1]和m[j]的和。最后,将新行n的指针赋给res[i],并更新returnColumnSizes[i]为i+1。

  4. 返回结果:最后,返回二维数组res的指针。

代码实现

/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/
int** generate(int numRows, int* returnSize, int** returnColumnSizes) {int** res = (int**) malloc(sizeof(int*) * numRows);*returnSize = numRows;*returnColumnSizes = (int*) malloc(sizeof(int) * numRows);res[0] = (int*) malloc(sizeof(int) * 1);(*returnColumnSizes)[0] = 1;res[0][0] = 1;for (int i = 1; i < numRows; i++) {int* m = res[i - 1];int* n = (int*) malloc(sizeof(int) * (i + 1));(*returnColumnSizes)[i] = i + 1;n[0] = 1;for (int j = 1; j < i; j++) {n[j] = m[j - 1] + m[j];}n[i] = 1;res[i] = n;}return res;
}

Leecode-238-除自身以外数组的乘积

题目

给你一个整数数组 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]

解题思路

  1. 创建一个结果数组 res,并将第一个元素初始化为 1
  2. 从左到右遍历数组,记录左侧元素的乘积
  3. 从右到左遍历数组,记录右侧元素的乘积
  4. 返回结果数组 res

代码实现

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int *res = (int *)malloc(sizeof(int)* numsSize);*returnSize = numsSize;res[0] = 1;for(int i = 1; i < numsSize; i++){res[i] = res[i - 1] * nums[i - 1];}int flag = 1;for(int i = numsSize - 1; i >= 0; i--){res[i] *= flag;flag *= nums[i];}return res;
}

http://www.ppmy.cn/news/1428139.html

相关文章

vue-Router 路由(常量路由)

1、安装 pnpm i vue-router 2、新建文件&#xff1a;src/routes.ts import { RouteRecordRaw } from vue-routerexport const constantRoute: RouteRecordRaw[] [{//path: /,redirect: /login,},{//path: /login,component: () > import(/views/Login/index.vue),name…

Android--ConnectivityManager使用

一、前言 Android10之后官方废弃了通过WifiManager连接WIFI的方式&#xff0c;现在要使用ConnectivityManager连接WIFI 二、连接WIFI public class MainActivity extends AppCompatActivity {private static final String TAG"lkx";Overrideprotected void onCrea…

uniapp uni.navigateBack 连带返回问题记录

uniapp uni.navigateBack 连带返回问题记录 问题描述 去除原生导航栏&#xff0c;使用自定义导航&#xff0c;并使用自定义返回按钮&#xff0c;通过方法handleBack.navigateBack()返回到上一页。 共有3层页面&#xff0c;A -> B -> C。都是自定义导航栏。均使用navig…

APP开发_ js 控制手机横屏或竖屏

1 Android 控制手机横屏或者竖屏的方法 1.1 配置 AndroidManifest.xml 以横屏模式为例&#xff1a; 在 Android 开发中&#xff0c;如果想让应用或某个特定的 Activity 在运行时以横屏模式显示&#xff0c;可以通过修改 Activity 的 AndroidManifest.xml 文件中的配置来实现…

pandas 中的 tolist() 和 to_list()

在使用pandas的时候&#xff0c;有时候会需要将pandas中的数据类型转换为python中的list&#xff0c;而pandas也提供了tolist()和to_list()这两个方法来实现这一需求 几乎可以认为pandas中的tolist()和to_list()用法没有差别 还顺便介绍了numpy中的tolist()方法&#xff0c;其…

OpenHarmony安全控件类型的UI控件(仅对系统应用开放)

介绍 本示例提供了安全控件类型的UI控件&#xff0c;支撑应用开发者集成安全控件做临时授权场景&#xff0c;当用户实际点击了某种类型的安全控件时&#xff0c;会对应用进行相应的临时授权&#xff0c;减少权限弹窗对用户的干扰&#xff0c;同时提供更小的授权范围。 效果预…

解读我国最新网络安全运维与数据处理安全规范:强化数字化时代安全基石

近日&#xff0c;全国网络安全标准化技术委员会秘书处公布了一系列重要的网络安全与数据安全相关技术规范草案&#xff0c;包括《网络安全技术 网络安全运维实施指南》、《网络安全技术 信息系统灾难恢复规范》以及《数据安全技术 政务数据处理安全要求》。这些规范旨在应对当前…

简介:Asp.Net Core进阶高级编程教程

课程简介目录 &#x1f680;前言一、课程背景二、课程目的三、课程特点四、课程适合人员六、最后 &#x1f680;前言 本文是《.Net Core进阶编程课程》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09…