当前位置: 首页 > news >正文

【Leetcode Sheet】Weekly Practice 2

Leetcode Test

1281 整数的各位积和之差(8.9)

给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。

提示:

  • 1 <= n <= 10^5

【原始代码】:

int subtractProductAndSum(int n){//1 <= n <= 10^5//except 100000, there're 5 bitsif(n==100000){return -1;}int bits[5]={0,0,0,0,0,0};int cnt=0;while(n>0){bits[cnt++]=n%10;n/=10;}int multi=1,sum=0;for(int i=0;i<cnt;i++){multi*=bits[i];sum+=bits[i];}return (multi-sum);
}

【优化代码】

int subtractProductAndSum(int n) {int m = 1, s = 0;	//m是乘积,sum是求和while (n) {	//当n!=0时int x = n % 10;		//x是n的余数n /= 10;	//n缩小m *= x;		//m进行乘积s += x;		//s进行求和}return m - s;	//返回 乘积-求和
}
//减少位数的存储,空间复杂度为O(1)
//时间复杂度仍然为O(m),m为n的位数

【其他思路】

将n转为字符串,例如n是1234,则char temp=‘1234’

后续直接遍历strlen(temp),计算temp[i]-'0’的值即可

1289 下降路径最小和 II(8.10)

给你一个 n x n 整数矩阵 grid ,请你返回 非零偏移下降路径 数字和的最小值。

非零偏移下降路径 定义为:从 grid 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。

提示:

  • n == grid.length == grid[i].length
  • 1 <= n <= 200
  • -99 <= grid[i][j] <= 99
int minFallingPathSum(int** grid, int gridSize, int* gridColSize) {int first_min_sum = 0;int second_min_sum = 0;int first_min_index = -1;for (int i = 0; i < gridSize; i++) {    //遍历外层int cur_first_min_sum = INT_MAX;    //记录最小值int cur_second_min_sum = INT_MAX;   //记录次小值int cur_first_min_index = -1;   //记录最小值列编号for (int j = 0; j < gridSize; j++) {    //遍历内层int cur_sum = (j != first_min_index ? first_min_sum : second_min_sum) + grid[i][j];//当前求和计算,如果j和最小值列编号不一样,则添加最小值,否则添加次小值if (cur_sum < cur_first_min_sum) {  //如果当前求和,小于最小cur_second_min_sum = cur_first_min_sum;     //更新次小为之前的最小cur_first_min_sum = cur_sum;    //更新最小为当前的求和cur_first_min_index = j;    //更新比列编号} else if (cur_sum < cur_second_min_sum) {  //如果当前求和,小于次小cur_second_min_sum = cur_sum;   //更新次小为当前的求和}}first_min_sum = cur_first_min_sum;  //更新最小second_min_sum = cur_second_min_sum;    //更新次小first_min_index = cur_first_min_index;  ///更新列编号}return first_min_sum;
}

1572 矩阵对角线元素的和(8.11)

给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。

请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。

提示:

  • n == mat.length == mat[i].length
  • 1 <= n <= 100
  • 1 <= mat[i][j] <= 100
int diagonalSum(int** mat, int matSize, int* matColSize){//n x n matrixint n=matSize,sum=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if((i==j)||(i+j==n-1)){    //i==j 主对角线;i+j==n-1 次对角线sum+=mat[i][j];}}}return sum;
}

2681 英雄的力量(8.1补)

给你一个下标从 0 开始的整数数组 nums ,它表示英雄的能力值。如果我们选出一部分英雄,这组英雄的 力量 定义为:

  • i0i1 ,… ik 表示这组英雄在数组中的下标。那么这组英雄的力量为 max(nums[i0],nums[i1] ... nums[ik])2 * min(nums[i0],nums[i1] ... nums[ik])

请你返回所有可能的 非空 英雄组的 力量 之和。由于答案可能非常大,请你将结果对 109 + 7 取余。

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 109
int cmp(void *a,void *b){return *(int*)a-*(int*)b;
}int sumOfPower(int* nums, int numsSize){qsort(nums,numsSize,sizeof(int),cmp);   //元素的顺序不影响答案,先排序//power = max*max*minint dp = 0, preSum = 0;int res = 0, mod = 1e9 + 7;for (int i = 0; i < numsSize; i++) {dp = (nums[i] + preSum) % mod;preSum = (preSum + dp) % mod;res = (int) ((res + (long long) nums[i] * nums[i] % mod * dp) % mod);if (res < 0) {res += mod;}}return res;
}

23 合并K个升序链表(8.12)

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

提示:

  • k == lists.length
  • 0 <= k <= 10^4
  • 0 <= lists[i].length <= 500
  • -10^4 <= lists[i][j] <= 10^4
  • lists[i]升序 排列
  • lists[i].length 的总和不超过 10^4
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/int cmp(const void * a, const void * b)//升序子函数
{return *(int *)a - *(int *)b;
}
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize){if(listsSize == 0 ){return NULL;}int ans[10000];//临时保存链表值int node = 0;for(int i = 0; i <listsSize; i++)//保存所有链表值{while(lists[i]){ans[node++] = lists[i]->val;lists[i] = lists[i]->next;}}qsort(ans, node, sizeof(int), cmp);//排序struct ListNode * h = NULL;struct ListNode * root = NULL;for(int i = 0; i < node; i++)//转换为链表存储{struct ListNode * r = malloc(sizeof(struct ListNode));r->val = ans[i];r->next = NULL;if(root == NULL){h = r;root = r;}else{h->next = r;h = r;}  }return root;
}

88 合并两个有序数组(8.13)

给你两个按 非递减顺序 排列的整数数组 nums1nums2,另有两个整数 mn ,分别表示 nums1nums2 中的元素数目。

请你 合并 nums2nums1 中,使合并后的数组同样按 非递减顺序 排列。

**注意:**最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n

提示:

  • nums1.length == m + n
  • nums2.length == n
  • 0 <= m, n <= 200
  • 1 <= m + n <= 200
  • -109 <= nums1[i], nums2[j] <= 109
int cmp(void *a,void *b){return *(int*)a-*(int*)b;
}void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){int cnt=0,i=m;while(cnt<n){nums1[i++]=nums2[cnt++];}qsort(nums1,(n+m),sizeof(int),cmp);
}

a former method

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){for(int i=0;i!=n;i++){nums1[m+i]=nums2[i];}int minno;for(int i=0;i<m+n-1;i++){minno=i;for(int j=i+1;j<m+n;j++){if(nums1[j]<nums1[minno]){minno=j;}}//找到i后面的最小数,交换i位置和minno位置int temp=nums1[i];nums1[i]=nums1[minno];nums1[minno]=temp;}
}

a new-spaced method: O(n+m) of both time and space

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int p1 = 0, p2 = 0;int sorted[m + n];	//new-spacedint cur;while (p1 < m || p2 < n) {if (p1 == m) {cur = nums2[p2++];} else if (p2 == n) {cur = nums1[p1++];} else if (nums1[p1] < nums2[p2]) {cur = nums1[p1++];} else {cur = nums2[p2++];}sorted[p1 + p2 - 1] = cur;}for (int i = 0; i != m + n; ++i) {nums1[i] = sorted[i];}
}

617 合并二叉树(8.14)

给你两棵二叉树: root1root2

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

返回合并后的二叉树。

注意: 合并过程必须从两个树的根节点开始。

提示:

  • 两棵树中的节点数目在范围 [0, 2000]
  • -104 <= Node.val <= 104
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*///深度优先搜索 dfs
struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2){//如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;//否则,不为 null 的节点将直接作为新二叉树的节点。if(root1 == NULL) return root2;else if(root2 == NULL) return root1;struct TreeNode* result=malloc(sizeof(struct TreeNode));result->val=root1->val + root2->val;result->left=mergeTrees(root1->left,root2->left); 	//左子树递归result->right=mergeTrees(root1->right,root2->right);	//右子树递归return result;
}

C++:

递归,直接在原root1进行修改

class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (root1 && root2) {root1->val += root2->val;root1->left = mergeTrees(root1->left, root2->left);root1->right = mergeTrees(root1->right, root2->right);}return root1 ? root1 : root2;}
};

另可进行广度优先(较为复杂)

相关文章:

【Leetcode Sheet】Weekly Practice 2

Leetcode Test 1281 整数的各位积和之差(8.9) 给你一个整数 n&#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 提示&#xff1a; 1 < n < 10^5 【原始代码】&#xff1a; int subtractProductAndSum(int n){//1 < n < 10^5//…...

【BERTopic应用 03/3】:微调参数

一、说明 一般来说&#xff0c;BERTopic 在开箱即用的模型中工作得很好。但是&#xff0c;当您有数百万个数据要处理时&#xff0c;使用基本模型处理数据可能需要一些时间。在这篇文章中&#xff0c;我将向您展示如何微调BERTopic中的一些参数并比较它们的结果。让我们潜入。 二…...

2023年上半年数学建模竞赛题目汇总与难度分析

2023年上半年数学建模竞赛题目汇总与难度分析 ​由于近年来国赛ABC题出题方式漂浮不定&#xff0c;没有太大的定性&#xff0c;目前总体的命题方向为&#xff0c;由之前的单一模型问题变为数据分析评价优化或者预测类题目是B、C题的主要命题方向。为了更好地把握今年命题的主方…...

Linux下搭建java环境

文章目录 一&#xff0c;xshell链接linux二&#xff0c;linux安装jdk环境 一&#xff0c;xshell链接linux 这里用到的工具,VMware搭配CentOS7 64位Xshell5 操作之前确保,传输Xshell连接了虚拟机 打开Xshell,文件->新建 主机ip—>进入虚拟机,右键打开终端,输入命令:ifco…...

String、StringBuffer、StringBuilder三者的异同?

String字符串 不可变的字符序列在 jdk1.8&#xff0c;我们底层用 char [ ] 存储在 jdk 17&#xff0c;我们底层用 byte [ ] 存储 StringBuffer字符串缓冲区类 可变的字符序列&#xff0c;线程安全的&#xff08;synchronized&#xff09;&#xff0c;效率低在 jdk1.8&#xf…...

htmlCSS-----弹性布局案例展示

目录 前言 效果展示 ​编辑 代码 思路分析 前言 上一期我们学习了弹性布局&#xff0c;那么这一期我们用弹性布局来写一个小案例&#xff0c;下面看代码&#xff08;上一期链接html&CSS-----弹性布局_灰勒塔德的博客-CSDN博客&#xff09; 效果展示 代码 html代码&am…...

Fiddler模拟请求发送和修改响应数据

fiddler模拟伪造请求 方法一&#xff1a;打断点模拟HTTP请求 1、浏览器页面填好内容后&#xff08;不要操作提交&#xff09;&#xff0c;打开fiddler&#xff0c;设置请求前断点&#xff0c;点击菜单fiddler,”Rules”\”Automatic Breakpoints”\”Before Requests” 2、在…...

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入

配置DID 一、Developer中创建SWC1.1 创建Application Component Type1.2 实例化Component二、在SWC中创建接口以及Runnable2.1 创建DID的Service Ports2.2 创建DID的Service Runnable三、在Configurator连接接口以及生成代码3.1 连接DCM与SWC3.2 生成RTE3.3 生成SWC的DID的模板…...

ChatGPT收录

VSCode插件-ChatGPT 多磨助手 多磨助手 (domore.run) Steamship Steamship 免费合集 免费chatGPT - Ant Design Pro 免费AI聊天室 (xyys.one)...

Nginx随笔

Nginx下载链接 安装命令&#xff1a; apt update apt install nginx 一、基础命令&#xff08;Ubuntu&#xff09; 1、在全局 nginx -t //检查Nginx的配置文件是否有错 systemctl start nginx //启动Nginx systemctl stop nginx //停止Nginx systemctl status nginx //查…...

61. 旋转链表

61. 旋转链表 题目-中等难度示例1. 快慢指针找到分割位置2. 连成环后截断 题目-中等难度 相关企业 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出…...

Python实现动态调用Matlab自定义函数

首先需要下载与python版本对应的matlab&#xff0c;并成功执行matlab中的setup.py文件 参考流程如下 https://blog.csdn.net/s1k9y9/article/details/127793053 完成上述步骤即可开始实现动态调用matlab文件。 文件目录如下 D://call/ |–matlab |–test1 |–main.m |–test2 |…...

redis集群和分片-Redis Cluster:分布式环境中的数据分片、主从复制和 Sentinel 哨兵

当涉及到 Redis 中的集群、分片、主从复制和 Sentinel 哨兵时&#xff0c;这些是构建分布式 Redis 环境中非常重要的概念和组件。下面详细介绍这些概念以及它们在分布式环境中的作用。 Redis Cluster Redis Cluster 是 Redis 官方提供的分布式解决方案&#xff0c;用于管理和…...

【数据库基础】Mysql下载安装及配置

下载 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 当前最新版本为 8.0版本&#xff0c;可以在Product Version中选择指定版本&#xff0c;在Operating System中选择安装平台&#xff0c;如下 安装 MySQL安装文件分两种 .msi和.zip [外链图片转存失…...

iptables安全与防火墙

防火墙 防火墙主要作用是隔离功能&#xff0c;它是部署在网络边缘或主机边缘&#xff1b;另外在生产中防火墙的主要作用是&#xff1a;决定哪些数据可以被外网访问以及哪些数据可以进入内网访问&#xff1b;顾名思义防火墙处于TCP协议中的网络层。 防火墙分类&#xff1a; 软…...

Linux 内核线程启动以及内核调用应用层程序

#include <linux/kthread.h> //内核线程头文件 static task_struct *test_task; test_task kthread_run(thread_function, NULL, "test_thread_name"); if(IS_ERR(test_task)) { pr_err("test_thread_name create fail\n"); } static int th…...

React+Typescript清理项目环境

上文 创建一个 ReactTypescript 项目 我们创建出了一个 React配合Ts开发的项目环境 那么 本文 我们先将环境清理感觉 方便后续开发 我们先来聊一下React的一个目录结构 跟我们之前开发的React项目还是有一些区别 public 主要是存放一些静态资源文件 例如 html 图片 icon之类的 …...

【linux学习】linux的模块机制

文章目录 前言模块的Hello World&#xff01; 前言 Linux允许用户通过插入模块&#xff0c;实现干预内核的目的。一直以来&#xff0c;对linux的模块机制都不够清晰&#xff0c;因此本文对内核模块的加载机制进行简单地分析。 ref:https://www.cnblogs.com/fanzhidongyzby/p/…...

用 oneAPI 实现 AI 欺诈检测:一款智能图像识别工具

简介 虚假图像和视频日益成为社交媒体、新闻报道以及在线内容中的一大隐患。在这个信息爆炸的时代&#xff0c;如何准确地识别和应对这些虚假内容已经成为一个迫切的问题。为了帮助用户更好地辨别虚假内容&#xff0c;我开发了一款基于 oneAPI、TensorFlow 和 Neural Compress…...

云计算的发展前景怎么样

云计算是当前科技领域中最受关注的领域之一,它的出现改变了传统的计算模式,使得企业和个人能够更加便捷地访问和使用计算资源。随着云计算技术的不断发展,它的前景也变得更加光明。 以下是云计算的发展前景: 云计算的市场份额将继续增长:根据市场研究机构的报告,云计算的市场份…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...