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

复制带随机指针的链表最长连续递增序列数组的度写字符串需要的行数最短补全词

复制带随机指针的链表

来源:杭哥

138. 复制带随机指针的链表 - 力扣(LeetCode)

typedef struct Node Node;
Node* BuyNode(int x)
{Node* newnode = (Node*)malloc(sizeof(Node));newnode->val=x;newnode->next=NULL;newnode->random=NULL;return newnode;
}
struct Node* copyRandomList(struct Node* head) 
{if (head==NULL){return NULL;}Node* newnode=NULL;Node* cur=head;Node* newhead=BuyNode(cur->val);Node* cur2=newhead;cur=cur->next;while(cur!=NULL){newnode=BuyNode(cur->val);cur2->next=newnode;cur2=newnode;cur=cur->next;}Node* now1=head;Node* now2=newhead;cur=head;cur2=newhead;while(now1!=NULL){if (now1->random==NULL){now2->random=NULL;}else{cur=head;cur2=newhead;while(cur!=NULL){if (now1->random==cur){now2->random=cur2;}cur=cur->next;cur2=cur2->next;}}now1=now1->next;now2=now2->next;}   return newhead;
}
typedef struct Node Node;
Node* BuyNode(int x)
{Node* newnode = (Node*)malloc(sizeof(Node));newnode->val=x;newnode->random=NULL;newnode->next=NULL;return newnode;
}
struct Node* copyRandomList(struct Node* head) 
{if (head==NULL){return NULL;}Node* newnode=NULL;Node* prev=head;Node* cur=head->next;while(1){newnode = BuyNode(prev->val);prev->next=newnode;newnode->next=cur;if (cur==NULL){break;}prev=cur; cur=cur->next;}cur=head->next;prev=head;while(1){if (prev->random==NULL){cur->random=NULL;}else{cur->random=prev->random->next;}prev=prev->next->next;if (prev==NULL){break;}cur=cur->next->next;}Node* newhead=head->next;prev=head;cur=head->next;Node* fur=NULL;while(1){fur=cur->next;prev->next=fur;if (fur==NULL){break;}cur->next=fur->next;prev=fur;cur=cur->next;}return newhead;    
}
我想说:
  1. 一种方法的话是时间复杂度为o(N^2)的方法,第二种方法的话是时间复杂度为O(N)的方法。

  1. 第二种方法主要就是说,相当于在原先链表的基础之上,先给他插入一些新的拷贝节点,最主要关心的问题就是拷贝节点的random指针指向的位置,可以发现一个规律:拷贝节点的random指针指向的拷贝节点应该是其原先节点的random指针指向的节点的next指向的节点。


最长连续递增序列

来源:自己LeetCode刷题

674. 最长连续递增序列 - 力扣(LeetCode)

int findLengthOfLCIS(int* nums, int numsSize)
{int left=0;int right=1;int ans=1;while(right<numsSize){while (right<numsSize && nums[right-1]<nums[right]){right++;}ans=ans>(right-left)?ans:(right-left);left=right;right++;}return ans;
}
我想说:
  1. 蛮简单的,双指针。


数组的度

来源:自己LeetCode刷题

697. 数组的度 - 力扣(LeetCode)

#include <stdlib.h>
int cmp(const void* e1, const void* e2)
{return *((int*)e1)-*((int*)e2);
}
int findgap(int x,int *nums, int numsSize)
{int max=0;int min=numsSize;int l=-1;int r=-1;for (int i=0;i<numsSize;i++){if (nums[i]==x){min=min<i?min:i;max=max>i?max:i;}}return max-min+1;
}
int findShortestSubArray(int* nums, int numsSize)
{if (numsSize==1){return 1;}int obj=0;int ans=0;int arr[numsSize];for (int i=0;i<numsSize;i++){arr[i]=nums[i];}qsort(arr,numsSize,4,cmp);int left=0;int right=1;while(right<numsSize){while (right < numsSize  &&  arr[right]==arr[right-1]){right++;}if (right-left>ans){ans=right-left;obj=arr[left];}else if (ans==right-left){int obj1=arr[left];int gap1=findgap(obj1,nums,numsSize);int gap=findgap(obj,nums,numsSize);if (gap1<gap){obj=obj1;}}left=right;right++;}return findgap(obj,nums,numsSize);
}
我想说:
  1. 很遗憾,现在只会暴力解法。


写字符串需要的行数

来源:自己LeetCode刷题

806. 写字符串需要的行数 - 力扣(LeetCode)

#include <string.h>
int* numberOfLines(int* widths, int widthsSize, char * s, int* returnSize)
{int* p = (int*)malloc(sizeof(int)*2);int sz=strlen(s);int row=0;int sum=0;for (int i=0;i<sz;i++){int num=s[i]-97;if (sum+widths[num]>100){row++;sum=0;i--;}else{sum+=widths[num];}}p[0]=row+1;p[1]=sum;*returnSize=2;return p;
}

我想说:

  1. 字符的话在计算机眼里本质上也是一个整型。


最短补全词

来源:自己LeetCode刷题

748. 最短补全词 - 力扣(LeetCode)

int cmp(const void* e1, const void* e2)
{return tolower(*((char*)e1))-tolower(*((char*)e2));
}
char * shortestCompletingWord(char * licensePlate, char ** words, int wordsSize)
{int i=0;char lp[10]={0};int sz=0;int len=1010;char* ans=NULL;while(licensePlate[i]!='\0'){if (isalpha(licensePlate[i])){lp[sz++]=licensePlate[i];}i++;}qsort(lp,sz,1,cmp);for (i=0;i<wordsSize;i++){int sz1=strlen(words[i]);char str[sz1+1];strcpy(str,words[i]);qsort(str,sz1,1,cmp);int k=0;int j=0;while(k<sz && j<sz1){while (j<sz1 && tolower(lp[k])!=tolower(str[j])){j++;}if (j==sz1){break;}k++;j++;}if (k==sz){if (sz1<len){len=sz1;ans=words[i];}}}return ans;
}
我想说:
  1. 依托于排序解题,也算是暴力解法吧。


相关文章:

复制带随机指针的链表最长连续递增序列数组的度写字符串需要的行数最短补全词

复制带随机指针的链表来源&#xff1a;杭哥138. 复制带随机指针的链表 - 力扣&#xff08;LeetCode&#xff09;typedef struct Node Node; Node* BuyNode(int x) {Node* newnode (Node*)malloc(sizeof(Node));newnode->valx;newnode->nextNULL;newnode->randomNULL;…...

「ML 实践篇」回归系统:房价中位数预测

文章目录1. 项目分析1. 框架问题2. 性能指标2. 获取数据1. 准备工作区2. 下载数据3. 查看数据4. 创建测试集3. 数据探索1. 地理位置可视化2. 寻找相关性3. 组合属性4. 数据准备1. 数据清理2. Scikit-Learn 的设计3. 处理文本、分类属性4. 自定义转换器5. 特征缩放6. 流水线5. 选…...

深度学习 Day27——利用Pytorch实现运动鞋识别

深度学习 Day27——利用Pytorch实现运动鞋识别 文章目录深度学习 Day27——利用Pytorch实现运动鞋识别一、查看colab机器配置二、前期准备1、导入依赖项并设置GPU2、导入数据三、构建CNN网络四、训练模型1、编写训练函数2、编写测试函数3、设置动态学习率4、正式训练五、结果可…...

Springboot 整合dom4j 解析xml 字符串 转JSONObject

前言 本文只介绍使用 dom4j 以及fastjson的 方式&#xff0c; 因为平日使用比较多。老的那个json也能转&#xff0c;而且还封装好了XML&#xff0c;但是本文不做介绍。 正文 ①加入 pom 依赖 <dependency><groupId>dom4j</groupId><artifactId>dom4j…...

网络安全实验——安全通信软件safechat的设计

网络安全实验——安全通信软件safechat的设计 仅供参考&#xff0c;请勿直接抄袭&#xff0c;抄袭者后果自负。 仓库地址&#xff1a; 后端地址&#xff1a;https://github.com/yijunquan-afk/safechat-server 前端地址&#xff1a; https://github.com/yijunquan-afk/safec…...

【MySQL】MySQL的事务

目录 概念 什么是事务? 理解事务 事务操作 事务的特性 事务的隔离级别 事务的隔离级别-操作 概念 数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查 询、更新和删除数据。 不同的存储引擎提供…...

Java分布式事务(七)

文章目录&#x1f525;Seata提供XA模式实现分布式事务_业务说明&#x1f525;Seata提供XA模式实现分布式事务_下载启动Seata服务&#x1f525;Seata提供XA模式实现分布式事务_转账功能实现上&#x1f525;Seata提供XA模式实现分布式事务_转账功能实现下&#x1f525;Seata提供X…...

二十八、实战演练之定义用户类模型、迁移用户模型类

1. Django默认用户模型类 &#xff08;1&#xff09;Django认证系统中提供了用户模型类User保存用户的数据。 User对象是认证系统的核心。 &#xff08;2&#xff09;Django认证系统用户模型类位置 django.contrib.auth.models.User&#xff08;3&#xff09;父类AbstractUs…...

Java Virtual Machine的结构 3

1 Run-Time Data Areas 1.1 The pc Register 1.2 Java Virtual Machine Stacks 1.3 Heap 1.4 Method Area JVM方法区是在JVM所有线程中共享的内存区域&#xff0c;在编程语言中方法区是用于存储编译的代码、在操作系统进程中方法区是用于存储文本段&#xff0c;在JVM中方法…...

linux ubuntu22 安装neo4j

环境&#xff1a;neo4j 5 ubuntu22 openjdk-17 neo4j 5 对 jre 版本要求是 17 及以上&#xff0c;且最好是 openjdk&#xff0c;使用比较新的 ubuntu 系统安装比较好&#xff0c; centos7 因为没有维护&#xff0c;yum 找不到 openjdk-17了。 官方的 debian 系列安装教程&a…...

模型实战(7)之YOLOv8推理+训练自己的数据集详解

YOLOv8推理+训练自己的数据集详解 最近刚出的yolov8模型确实很赞啊,亲测同样的数据集用v5和v8两个模型训练+预测,结果显示v8在检测精度和准确度上明显强于v5。下边给出yolov8的效果对比图: 关于v8的结构原理在此不做赘述,随便搜一下到处都是。1.环境搭建 进入github进行git…...

火车进出栈问题 题解

来源 卡特兰数 个人评价&#xff08;一句话描述对这个题的情感&#xff09; …~%?..,# *☆&℃$︿★? 1 题面 一列火车n节车厢&#xff0c;依次编号为1,2,3,…,n。每节车厢有两种运动方式&#xff0c;进栈与出栈&#xff0c;问n节车厢出栈的可能排列方式有多少种。 输入…...

Unity学习日记12(导航走路相关、动作完成度返回参数)

目录 动作的曲线与函数 创建遮罩 导航走路 设置导航网格权重 动作的曲线与函数 执行动作&#xff0c;根据动作完成度返回参数。 函数&#xff0c;在代码内执行同名函数即可调用。在执行关键帧时调用。 创建遮罩 绿色为可效用位置 将其运用到Animator上的遮罩&#xff0c;可…...

基于bearpi的智能小车--Qt上位机设计

基于bearpi的智能小车--Qt上位机设计 前言一、界面原型1.主界面2.网络配置子窗口模块二、设计步骤1.界面原型设计2.控件添加信号槽3.源码解析3.1.网络链接核心代码3.2.网络设置子界面3.3.小车控制核心代码总结前言 最近入手了两块小熊派开发板,借智能小车案例,进行鸿蒙设备学…...

汇编语言与微机原理(1)基础知识

前言&#xff08;1&#xff09;本人使用的是王爽老师的汇编语言第四版和学校发的微机原理教材配合学习。&#xff08;2&#xff09;推荐视频教程通俗易懂的汇编语言&#xff08;王爽老师的书&#xff09;&#xff1b;贺老师C站账号网址&#xff1b;&#xff08;3&#xff09;文…...

ASEMI代理瑞萨TW8825-LA1-CR汽车芯片

编辑-Z TW8825-LA1-CR在单个封装中集成了创建多用途车载LCD显示系统所需的许多功能。它集成了高质量的2D梳状NTSC/PAL/SECAM视频解码器、三重高速RGB ADC、高质量缩放器、多功能OSD和高性能MCU。TW8825-LA1-CR其图像视频处理能力包括任意缩放、全景缩放、图像镜像、图像调整和…...

什么是 .com 域名?含义和用途又是什么?

随着网络的发展&#xff0c;网络上出现了各种不同后缀的域名&#xff0c;这些域名的后缀各有不同的含义&#xff0c;也有不同的用途。今天&#xff0c;我们就一起来探讨一下 .com 后缀的域名知识。 .com 域名是一种最常见的顶级域名&#xff0c;它是由美国国家网络信息中心&…...

VueX快速入门(适合后端,无脑入门!!!)

文章目录前言State和Mutations基础简化gettersMutationsActions&#xff08;异步&#xff09;Module总结前言 作为一个没啥前端基础&#xff08;就是那种跳过js直接学vue的那种。。。&#xff09;的后端选手。按照自己的思路总结了一下对VueX的理解。大佬勿喷qAq。 首先我们需要…...

前列腺癌论文笔记

名词解释 MRF: 磁共振指纹打印技术( MR Fingerprinting)是近几年发展起来的最新磁共振技术&#xff0c;以一种全新的方法对数据进行采集、后处理和实现可视化。 MRF使用一种伪随机采集方法&#xff0c;取代了过去为获得个体感兴趣的参数特征而使用重复系列数据的采集方法&…...

Python+Yolov5道路障碍物识别

PythonYolov5道路障碍物识别如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<PythonYolov5道路障碍物识别>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...