个人学习编程(3-22) leetcode刷题

news2025/3/26 2:26:30

连续子数组:(难)

示例 1: 输入: nums = [0,1]

输出: 2

说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组

示例 2:

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

输出: 2

说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。

 需要理解的知识:

//count0(i,j) = count0(0,j) - count0(0,i-1);

例如: count0(3,5) = count0(0,5)-count0(0,2);

#include <stdio.h>

int cindex(int j){
    return j + 1;
}

int findex(int j, int numsSize) {
    return j + numsSize;
}

int findMaxLength(int* nums, int numsSize) {
    int countDiffSize = numsSize + 1;
    int countDiff[countDiffSize];

    countDiff[cindex(-1)] = 0;
    for (int k = 0; k < numsSize; k++){
        if (nums[k] == 0){
            countDiff[cindex(k)] = countDiff[cindex(k - 1)] + 1;
        }else{
            countDiff[cindex(k)] = countDiff[cindex(k - 1)] - 1;
        }
    }
    
    int findMaxJSize = 2 * numsSize + 1;
    int findMaxJ[findMaxJSize];

    for (int k = -numsSize; k < numsSize; k++){
        findMaxJ[findex(k, numsSize)] = -1;
    }
    for (int j = 0; j < numsSize; j++)
    {
        findMaxJ[findex(countDiff[cindex(j)], numsSize)] = j;
    }
    
    int maxLength = 0;
    for (int i = 0; i < numsSize; i++)
    {
        int target = countDiff[cindex(i-1)];

        int length = findMaxJ[findex(target, numsSize)] - i + 1;
        if (length > maxLength)
        {
            maxLength = length;
        }
    }
    return maxLength;
}

int main() {
    int nums1[] = {0, 1};
    int nums2[] = {0, 1, 0, 1};
    int nums3[] = {0, 1, 1, 0, 1, 0};
    int nums4[] = {1, 1, 1, 0, 0, 0};
    int nums5[] = {1, 0, 1, 1, 0};
    int nums6[] = {1, 1, 1};

    printf("Test 1: %d\n", findMaxLength(nums1, 2)); // Expected: 2
    printf("Test 2: %d\n", findMaxLength(nums2, 4)); // Expected: 4
    printf("Test 3: %d\n", findMaxLength(nums3, 6)); // Expected: 6
    printf("Test 4: %d\n", findMaxLength(nums4, 6)); // Expected: 6
    printf("Test 5: %d\n", findMaxLength(nums5, 5)); // Expected: 4
    printf("Test 6: %d\n", findMaxLength(nums6, 3)); // Expected: 0

    return 0;
}

今天晚上再看一遍把。难理解。。绕。。。

统计最大字符:

输入:aaaabbbbbbbbbbbbbbccc
输出:14 b

 C:

#include <stdio.h>
#include <string.h>
#define MAX_LEN 100

int main() {
    char str [MAX_LEN];
    int count[26] = { 0 };
    int max_count = 0;
    char result_char;
    //输入:
    fgets(str,MAX_LEN,stdin);
    //统计次数:
    for (int i = 0; str[i] != '\0'; i++){
        if (str[i] >= 'a' && str[i] <= 'z'){
            count[str[i] - 'a']++;
        } 
    }
    //输出:
    for (int i = 0; i < 26; i++){
        if (count[i] > max_count){
            max_count = count[i];
            result_char = 'a' + i;
        }else if (count[i] == max_count){
            if ('a' + i <result_char){
                result_char = 'a' + i;
            }   
        }
    }
    printf("%d %c",max_count,result_char);
}

C++:

C++还是好用一些,在sort排序之后,即使两者的数量相同了,因为我们排序的原因,就可以使输出的仍然是较小值的i

C语言输入字符串

char s[100];

fgets(s,100,stdin);

但是C++输入一个字符串:

// 读取输入 cout << "Enter a string: ";

getline(cin, s); // 使用 getline 读取包含空格的字符串

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

string s; //输入的字符串
int maxn = 0;
char ch = '\0';//初始化频率最高的字符为'\0';

void Max() {
    for (int i = 0; i < s.size(); i++){
        //利用 sort 计算字符 s[i] 在字符串中的出现次数
        int cnt = count(s.begin(),s.end(),s[i]);
        //保证先 sort() 再 Max() 这样就不用判断相等输出最小值i了
        if (cnt > maxn){
            maxn = cnt;
            ch = s[i];
        }
    }
}

int main() {
    //读取输入:
    cout << "Enter a string:~";
    getline(cin,s);

    sort(s.begin(),s.end());
    Max();

    cout << "character: "  << ch  << " frequency:" << maxn << "" << endl;
}

 出现次数超过一半的数:

给出一个含有n(0<n<= 1000)个整数的数组,请找出其中出现次数超过一半的数。数组中的数大于-50月小于50。

【输入】
第一行包含一个整数n,表示数组大小;
第二行包含n个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。

【输入样例】

1 2 2

【输出样例】

2

C++用count  if (count(a,a+n,a[i])>n/2) return true;

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

const int N = 1001;
int a[N], n;

void Input(){
    cin >> n;
    for (int i = 0; i < n; i++){  // 这里应该是 i < n,避免读取多余元素
        cin >> a[i];
    }
}

void Output(){
    for (int i = 0; i < n; i++){  // 这里应该是 i < n,避免检查多余元素
        if (count(a, a + n, a[i]) > n / 2){
            cout << a[i];
            return;
        }
    }
    cout << "0";
}

int main() {
    Input();
    Output();
    return 0;
}

 明明的随机数:

#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1001;
int arr[N];
int n;
void Input() {
    cin >> n;
    for (int i = 0; i < n; i++){
        cin >> arr[i];
    }
    return;
}

void Output() {
    int index = unique(arr, arr + n) - arr;
    int cnt = index;
    cout << cnt << endl;
    for (int i = 0; i < cnt; i++){
        cout << arr[i] << ' ';
    }
}

int main() {
    Input();
    sort(arr,arr + n);
    Output();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2319955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于python+django的酒店预定网站-酒店管理系统源码+运行步骤+课程学习

该系统是基于pythondjango开发的酒店预定管理系统。适用场景&#xff1a;大学生、课程作业、毕业设计。学习过程中&#xff0c;如遇问题可在github给作者留言。共同学习技术 演示地址 前台地址&#xff1a; http://hotel.gitapp.cn 后台地址&#xff1a; http://hotel.gitapp…

Spring 6: 3容器-Ioc

3、容器&#xff1a;IoC IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容…

【漫话机器学习系列】154.岭回归(Ridge Regression)

岭回归&#xff08;Ridge Regression&#xff09;详解 1. 引言 岭回归&#xff08;Ridge Regression&#xff09;是一种改进的线性回归方法&#xff0c;它通过引入正则化项来解决普通最小二乘法&#xff08;OLS, Ordinary Least Squares&#xff09;可能遇到的多重共线性问题…

wsl2配置xv6全解(包括22.04Jammy)

文章目录 获取xv6源代码Ubuntu20.04 Version安装指令成功测试参考MIT2021年官方文档 24.04 Version安装指令成功测试参考MIT2024年官方文档 Ubuntu 22.04没有官方文档&#xff1f; 配置大体流程1. 卸载原本qemu&#xff08;如果之前安装了&#xff09;2. clone qemu官方源代码&…

并查集——108. 冗余连接

108. 冗余连接 题目描述 有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图(其实就是一个线形图),如图: 现在在这棵树上的基础上,添加一条边(依然是n个节点,但有n条边),使这个图变成了有环图,如图: 先请你找出冗余边,删除后…

初识XXL-JOB分布式任务调度

XXL-JOB架构分析 设计思想 将调度行为抽象形成"调度中心"公共平台&#xff0c;而平台自身并不承担业务逻辑&#xff0c;"调度中心"负责发起调度请求。 将任务抽象成分散的JobHandler&#xff0c;交由"执行器"统一管理&#xff0c;"执行器…

【数据结构进阶】位图

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 一、位图的概念与结构 二、位图的实现 1. 结构定义 2. 构造函数 3. 三大接口实现 set unset test 总代码 4. 测试 三、 标准库的…

[极客大挑战 2019]BabySQL—3.20BUUCTF练习day4(3)

[极客大挑战 2019]BabySQL-3.20BUUCTF练习day4(3) 做题过程 打开是以下页面&#xff08;前几天有它的第一版和第二版出现&#xff09;输入1’ 回显以下内容&#xff08;还是字符型以单引号闭合&#xff0c;因为有报错信息回显&#xff09; 输入1 order by 4%23回显成这个 被过…

JVM 学习前置知识

JVM 学习前置知识 Java 开发环境层次结构解析 下图展示了 Java 开发环境的层级关系及其核心组件&#xff0c;从底层操作系统到上层开发工具&#xff0c;逐步构建完整的开发与运行环境&#xff1a; 1. 操作系统&#xff08;Windows, MacOS, Linux, Solaris&#xff09; 作用&…

数智读书笔记系列021《大数据医疗》:探索医疗行业的智能变革

一、书籍介绍 《大数据医疗》由徐曼、沈江、余海燕合著&#xff0c;由机械工业出版社出版 。徐曼是南开大学商学院副教授&#xff0c;在大数据驱动的智能决策研究领域颇有建树&#xff0c;尤其在大数据驱动的医疗与健康决策方面有着深入研究&#xff0c;曾获天津优秀博士论文、…

解决python配置文件类configparser.ConfigParser,插入、读取数据,自动转为小写的问题

配置类 [Section1] Key_AAA Value[Section2] AnotherKey Value默认情况下&#xff0c;ConfigParser会将ini配置文件中的KEY&#xff0c;转为小写。 重载后配置类&#xff1a; 继承类从configparser.ConfigParser改为configparser.RawConfigParser重载方法optionxform&#…

什么是 BA ?BA怎么样?BA和BI是什么关系?

前几天有朋友在评论区提到了BA这个角色&#xff0c;具体是干什么的&#xff0c;我大概来说一下。 什么是BA BA 英文的全称是Business Analyst&#xff0c;从字面上意思就是商业分析师&#xff0c;做过商业智能BI项目的应该比较了解。实际上以我个人的经验&#xff0c;BA 的角…

Jmeter旧版本如何下载

1.Jmeter最新版本下载位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter旧版本下载位置 https://archive.apache.org/dist/jmeter/binaries稳定版本&#xff1a;5.4.1

Python帕累托图(Pareto Chart): 从数据排序到决策优化

帕累托图&#xff08;Pareto Chart&#xff09;是一种基于80/20法则的经典数据可视化工具&#xff0c;广泛应用于质量管理、项目管理、业务分析等领域。本文将从其原理、构成、实现方法到应用场景进行全面解析&#xff0c;并附Python代码示例。 一、帕累托图的定义与起源 帕累…

Python---数据分析(Pandas六:二维数组DataFrame,DataFrame的创建,DataFrame的属性)

一、 二维数组DataFrame DataFrame 是 Pandas 中的一个表格型的数据结构&#xff0c;包含有多列的数据&#xff0c;每列可以是不同的值类型(数值、字符串、布尔型等)&#xff0c;DataFrame 即有行索引也有列索引&#xff0c;可以被看做是由 Series 组成的字典。 二、DataFrame的…

内网安全-横向移动Kerberos 攻击SPN 扫描WinRMWinRSRDP

1.WinRM&WinRS 条件&#xff1a; 双方开启winrm winrs服务 2008版本以上默认开启&#xff0c;win 7默认关闭 检测使用cs内置端口扫描5985开放情况 进行连接 winrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 whoami 2.内网-spn shell setspn -T …

深入理解 lt; 和 gt;:HTML 实体转义的核心指南!!!

&#x1f6e1;️ 深入理解 < 和 >&#xff1a;HTML 实体转义的核心指南 &#x1f6e1;️ 在编程和文档编写中&#xff0c;< 和 > 符号无处不在&#xff0c;但它们也是引发语法错误、安全漏洞和渲染混乱的头号元凶&#xff01;&#x1f525; 本文将聚焦 <&#…

红数码影视(RED Digital Cinema)存储卡格式化后的恢复方法

红数码影视(RED Digital Cinema)的摄像机可以生成两种RAW级高清视频文件&#xff0c;一种是R3D&#xff0c;一种是MOV。其中MOV属于苹果(apple)公司的QT视频封装结构&#xff0c;使用的视频编码是Apple ProRes;而R3D则是RED公司自创的RAW视频文件&#xff0c;这种文件解码需要使…

关于TVS管漏电流的问题?

问题描述&#xff1a; 在量产的带电池故事机生产中&#xff0c;工厂产线测试电流时&#xff0c;有1台机器电流比正常机器大10mA左右。 原因分析&#xff1a; 1、分析电路原理图&#xff0c;去除可能出现问题的电压或器件&#xff08;不影响系统&#xff09;&#xff0c;发现…

区块链交易所平台开发全解析

在数字化飞速发展的今天&#xff0c;区块链技术已成为金融领域的核心驱动力之一。作为数字货币交易的关键平台&#xff0c;区块链交易所的开发不仅涉及复杂的技术环节&#xff0c;还需要兼顾用户体验、安全性、合规性等多个方面。本文将深入探讨区块链交易所平台的开发流程、关…