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

#基础算法

1 差分练习

1 模板题

代码实现:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int num = sc.nextInt();long[][] arr = new long[n + 2][m + 2];for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {insert(arr, i, j, i, j, sc.nextInt());}}while (num > 0) {int x1 = sc.nextInt();int y1 = sc.nextInt();int x2 = sc.nextInt();int y2 = sc.nextInt();int zz = sc.nextInt();insert(arr, x1, y1, x2, y2, zz);num--;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {arr[i][j] = arr[i][j] + arr[i - 1][j] + arr[i][j - 1] - arr[i - 1][j - 1];}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {System.out.print(arr[i][j] + " ");}System.out.println();}}public static void insert(long[][] arr, int x1, int y1, int x2, int y2, int num) {arr[x1][y1]+=num;arr[x1][y2+1]-=num;arr[x2+1][y1]-=num;arr[x2+1][y2+1]+=num;}
}

2 干草堆2041. 干草堆 - AcWing题库

代码实现:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int N = input.nextInt();int K = input.nextInt();long []arr1 = new long[N+2];while(K>0){int x = input.nextInt();int y = input.nextInt();arr1[x] += 1;arr1[y+1] -= 1;K--;}for (int i = 2; i <= N; i++) {arr1[i] =arr1[i-1]+arr1[i];}Arrays.sort(arr1);System.out.println(arr1[N / 2 + 2]);}
}

3 最高的牛101. 最高的牛 - AcWing题库

代码实现:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int N = input.nextInt();//牛的数量int P = input.nextInt();//最高牛的位置int H = input.nextInt();//最高牛的身高int M = input.nextInt();//对数boolean[][] exist = new boolean[N + 1][N + 1];int[] arr = new int[N + 1];arr[0] = H;//给第一个元素初始化为H间接使每一个数都初始化为H,在过程中不断的相减从而达到题目的要求for (int i = 1; i <= M; i++) {int A = input.nextInt();int B = input.nextInt();if (A > B) {int temp = A;//大小A = B;B = temp;}if (!exist[A][B]) {//去重arr[A + 1]--;arr[B]++;exist[A][B] = true;}}for (int i = 1; i <= N; i++) {arr[i] = arr[i - 1] + arr[i];System.out.println(arr[i]);}}
}

4 棋盘5396. 棋盘 - AcWing题库

代码实现:

import java.io.*;
import java.util.Scanner;public class Main {static int N=2010;static int[][] b=new int[N][N];public static void main(String[] args) throws IOException {Scanner scanner=new Scanner(new BufferedInputStream(System.in));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));int n=scanner.nextInt(),m=scanner.nextInt();while(m-->0) {int x1=scanner.nextInt(),y1=scanner.nextInt(),x2=scanner.nextInt(),y2=scanner.nextInt();insert(x1,y1,x2,y2,1);}for(int i=1;i<=n;i++) {for(int j=1;j<=n;j++) {b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];writer.write(Integer.toString(b[i][j] % 2));}writer.write('\n');}writer.flush();scanner.close();}public static void insert(int x1, int y1, int x2, int y2,int c) {b[x1][y1]+=c;b[x2+1][y1]-=c;b[x1][y2+1]-=c;b[x2+1][y2+1]+=c;}
}

5 桶列表1715. 桶列表 - AcWing题库

代码实现:


import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int N = input.nextInt();int[] arr = new int[10100];int max = 0;for (int i = 0; i < N; i++) {int si = input.nextInt();max = Math.max(max, si);int ti = input.nextInt();max = Math.max(max, ti);int bi = input.nextInt();arr[si] += bi;arr[ti + 1] -= bi;}for (int i = 1; i <= max; i++) {arr[i] += arr[i - 1];//System.out.println(arr[i]);}Arrays.sort(arr);System.out.println(arr[arr.length - 1]);}
}

2 双指针练习

1 判断源字符串是否可以通过删除字符从而变成目标字符串

import java.util.Scanner;public class abc_2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String SS = sc.next();String TS = sc.next();sc.close();if (en(SS, TS)) {System.out.println("YES");} else {System.out.println("NO");}}private static boolean en(String SS, String TS) {int sIndex = 0, tIndex = 0;while (sIndex < SS.length() && tIndex < TS.length()) {if (SS.charAt(sIndex) == TS.charAt(tIndex)) {tIndex++; // 移动目标字符串的索引}sIndex++; // 移动源字符串的索引}// 如果目标字符串已经完全匹配,则返回YESreturn tIndex == TS.length();}
}

2 数组的逆置

import java.util.Scanner;public class abc_1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int len = sc.nextInt();int [] arr = new int[len];for (int i = 0; i < len; i++) {arr[i] = sc.nextInt();}for(int i=0,j=len-1;i<j;i++,j--) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}for(int i=0;i<len;i++) {System.out.print(arr[i]+" ");}}
}

3 完美序列(未ac)

代码实现

1 暴力for

import java.util.Arrays;
import java.util.Scanner;public class abc_6 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int N = input.nextInt();int p = input.nextInt();int[] arr = new int[N];for (int i = 0; i < N; i++) {arr[i] = input.nextInt();}Arrays.sort(arr);int count = 0;for (int i = 0; i < N - 1; i++) {for (int j = arr.length - 1; j > 0; j--) {if (arr[i] * p >= arr[j] && i < j) {count = Math.max(count, j - i + 1);}}}System.out.println(count);}
}

双指针算法改进

import java.util.Arrays;
import java.util.Scanner;public class abc_7 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int N = input.nextInt();int p = input.nextInt();int[] arr = new int[N];for (int i = 0; i < N; i++) {arr[i] = input.nextInt();}Arrays.sort(arr);int count = 0;int j = 0;for (int i = 0; i < N; i++) {while (j < N && arr[i] * p >= arr[j]) {j++;}if (i < j) {count = Math.max(count, j - i);}}System.out.println(count);}
}

4 最长连续递增序列

import java.util.Scanner;public class acb_4 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();//数组长度int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = input.nextInt();}int len_max = 0;for (int i = 0; i < n; i++) {int j = i;//这里需要将索引位置拉到倒数第二个数while (j < n - 1 && check(arr, j)) {//j-i+1是两个位置的距离差,+1是因为index+1位置开始len_max = Math.max(len_max, j - i + 1 + 1);j++;}}System.out.println(len_max);}public static boolean check(int[] arr, int index) {return arr[index + 1] - arr[index] > 0;}
}

5 --3. 无重复字符的最长子串 - 力扣(LeetCode)

代码实现:

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;class abc_8 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();int len = len(s);System.out.println(len);}public static int len(String s) {if (s == null || s.isEmpty()) return 0;Set<Character> set = new HashSet<>();int i = 0, j = 0, res = 0;while (j < s.length()) {//枚举以第j个字符结尾的最长不重复子串,j从0到s.length()-1if (!set.contains(s.charAt(j))) {//set不包含s.charAt(j),说明不重复,放心加入,j继续后移,更新最大长度set.add(s.charAt(j++));res = Math.max(res, j - i);} else {set.remove(s.charAt(i++));//由于j直到调用set.add(s.charAt(j++))那里才会更新,//故!set.contains(s.charAt[j])会连续为false很多次,//直到set.remove(s.charAt(i++))连续执行很多次,这里的i是从0索引位置开始出发一直删到重复那个元素//eg:pwwkew  此时的s.charAt(j)为w,要将set集合里面的从头开始删除到w - (pw)//把s.charAt[j]删除为止}}return res;}
}

3 滑动窗口练习

//外层循环扩展右边界,内层循环扩展左边界
for (int l = 0, r = 0 ; r < n ; r++) {//当前考虑的元素while (l <= r && check()) {//区间[left,right]不符合题意//扩展左边界}//区间[left,right]符合题意,统计相关信息
}

1-- 3. 无重复字符的最长子串 - 力扣(LeetCode)

class abc_9 {public int lengthOfLongestSubstring(String s) {//滑动窗口char[] ss = s.toCharArray();Set<Character> set = new HashSet<>();//去重int res = 0;//结果for(int left = 0, right = 0; right < s.length(); right++) {//每一轮右端点都扩一个。char ch = ss[right];//right指向的元素,也是当前要考虑的元素while(set.contains(ch)) {//set中有ch,则缩短左边界,同时从set集合出元素set.remove(ss[left]);left++;}set.add(ss[right]);//别忘。将当前元素加入。res = Math.max(res, right - left + 1);//计算当前不重复子串的长度。}return res;}
}

相关文章:

#基础算法

1 差分练习 1 模板题 代码实现&#xff1a; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int num sc.nextInt();long[][] arr new long[n 2][m …...

如何用猿大师办公助手实现OA系统中Word公文/合同在线编辑及流转?

在OA系统或者合同管理系统中&#xff0c;我们会经常遇到网页在线编辑Word文档形式的公文及合同的情况&#xff0c;并且需要上级对下级的公文进行批注等操作&#xff0c;或者不同部门的人需要签字审核&#xff0c;这就需要用到文档流转功能&#xff0c;如何用猿大师办公助手实现…...

Python中的列表是什么?它们有什么用途?

1、Python中的列表是什么&#xff1f;它们有什么用途&#xff1f; 在Python中&#xff0c;列表是一种有序的集合&#xff0c;可以包含不同类型的元素。列表可以存储一组值&#xff0c;并且可以方便地访问、修改和操作这些值。 列表的主要用途包括&#xff1a; 数据存储&…...

探索现代软件开发中的持续集成与持续交付(CI/CD)实践

探索现代软件开发中的持续集成与持续交付&#xff08;CI/CD&#xff09;实践 随着软件开发的飞速进步&#xff0c;现代开发团队已经从传统的开发模式向更加自动化和灵活的开发流程转变。持续集成&#xff08;CI&#xff09; 与 持续交付&#xff08;CD&#xff09; 成为当下主…...

React 前端框架开发入门案例

以下是一个使用 React 进行前端框架开发的入门案例&#xff0c;实现一个简单的待办事项列表应用。 一、准备工作 安装 Node.js&#xff1a;React 需要 Node.js 环境来运行。你可以从 Node.js 官方网站下载并安装适合你操作系统的版本。 创建项目目录&#xff1a;在你的电脑上…...

模拟 DDoS 攻击与防御实验

模拟 DDoS 攻击与防御实验可以帮助理解攻击原理和防御策略。在进行这种实验时&#xff0c;必须确保在受控、合法的环境中进行&#xff0c;避免对真实网络造成损害。以下是具体步骤&#xff1a; 环境要求 硬件&#xff1a;至少两台计算机&#xff08;或虚拟机&#xff09;&…...

【electron8】electron实现“图片”的另存为

注&#xff1a;该列出的代码&#xff0c;都在文章内示例出 1. 另存为按钮事件&#xff1a; const saveAsHandler async () > {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的&#xff0c;所以我需要根据接口返回的路…...

Python分析假期对美国出生率的影响

背景 1、数据集下载 birthsHistorical US birth data culled from the CDC website - jakevdp/data-CDCbirthshttps://github.com/jakevdp/data-CDCbirths 2、数据集介绍 此数据来自美国疾病控制和预防中心&#xff0c;并通过 Google 的 BigQuery Web UI 使用以下查询进行编…...

机械臂笛卡尔空间轨迹规划

1. 重新优化末端轨迹规划 调整末端轨迹的插值方法或参数&#xff1a;如果之前使用的是线性插值&#xff0c;可改为三次样条插值。例如&#xff0c;对于一个在二维平面上从点(0, 0)到(10, 10)的末端轨迹&#xff0c;线性插值可能是简单地在每个时间步长均匀增加坐标值&#xff0…...

红队工具---Behinder学习

1.什么是Behinder&#xff1f; Behinder 是一款用于网络渗透测试的安全工具&#xff0c;主要用于对 Web 应用进行攻击和漏洞利用。它提供了强大的功能&#xff0c;是一款红队的大杀器&#xff0c;几乎是现代web安全必须学习的一款webshell管理工具。 主要用途 渗透测试&#…...

k8s 1.28.2 集群部署 NFS server 和 NFS Subdir External Provisioner

文章目录 [toc]前言部署 NFS server镜像准备节点打标签启动 NFS server创建 pv 验证创建 pvc创建 pod 挂载验证 部署 NFS Subdir External Provisioner创建 pod 验证提前创建 pvc 的方式使用 volumeClaimTemplates 的方式 前言 NFS Subdir External Provisioner 可以使用现有的…...

前端零基础入门到上班:【Day1】什么是前端?

本来打算开付费专栏 但是想起那句话 赠人玫瑰手留余香 引言1. 什么是前端&#xff1f;1.1 前端的定义1.2 前端的三大核心技术1.3 前端框架和工具 2. 什么是后端&#xff1f;2.1 后端的定义2.2 后端的组成要素2.3 后端框架和工具 3. 前后端的区别4. 什么是前后端分离&#xff1f…...

搜索二叉树 Binary Search Tree(BST)

【提醒】本章内容需掌握二叉树结构的基本概念和特性&#xff0c;不然可能阅读起来比较费劲。 一、 概念 什么是搜索二叉树&#xff1f;搜索二叉树和普通二叉树的却别是什么&#xff1f; 答&#xff1a; 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树 或者是具有以下性…...

数据库表字段插入bug

瀚高数据库 目录 环境 BUG/漏洞编码 症状 触发条件 解决方案 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.1 BUG/漏洞编码 3355 症状 数据库安全版v4.5.1&#xff0c;安装包为&#xff1a;hgdb4.5.1-see-centos7-x86-64-20210804.…...

信创环境模拟:X86架构下部署搭建aarch64的ARM虚拟机

在真实系统为x86架构下&#xff0c;搭建arm64的虚拟开发环境。在该环境中直接下载打包项目依赖的python运行环境。 前言 随着国家信创环境的要求普及&#xff0c;基本和国家沾边的政企事业单位都换成了信创环境&#xff0c;即ARM64的cpu服务器&#xff0c;而且该类服务器是不…...

TSO的资料

TSO即TCP Segmentation Offload&#xff0c;相关资料如下&#xff1a; Segmentation Offloads in the Linux Networking StackWhat is TCP Segmentation OffloadUnderstanding TCP Segmentation Offload (TSO) and Large Receive Offload (LRO) in a VMware environment...

OpenCV视觉分析之目标跟踪(3)实现基于金字塔的 Lucas-Kanade 算法来进行稀疏光流计算的类SparsePyrLKOpticalFlow的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 用于计算稀疏光流的类。 该类可以使用带有金字塔的迭代 Lucas-Kanade 方法来计算稀疏特征集的光流 cv::SparsePyrLKOpticalFlow 类是 OpenCV 库…...

乐维网管平台(一):如何精准掌控 IP 管理

业网络已成为支撑业务运转的关键基础设施&#xff0c;而在企业网络管理中&#xff0c;IP 管理至关重要&#xff0c;它就像是网络秩序的守护者&#xff0c;确保网络的高效运行、安全可靠。 一、为什么企业要进行 IP 管理 1. 优化资源分配 IP 地址作为网络中的重要资源&#xf…...

React-Route新版本(v6或以上)用法示例

新版本的React-Route (v6或以上&#xff0c;但不排序后续版本还会有修改)&#xff0c;移除了Switch&#xff0c;写法和老版本有一些区别&#xff0c;下面分享一个示例&#xff1a; JSX文件: import React, {StrictMode } from react import { createRoot } from react-dom/cli…...

卡方检验方法概述与类型——四格表和R*C表卡方检验案例

卡方检验是以卡方分布为基础&#xff0c;针对定类数据资料的常用假设检验方法。其理论思想是判断实际观测到的频数与有关总体的理论频数是否一致。 卡方统计量是实际频数与理论频数吻合程度的指标。卡方值越小&#xff0c;表明实际观察频数与理论频数越接近&#xff0c;反之卡…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

Java并发编程实战 Day 11:并发设计模式

【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天&#xff0c;今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案&#xff0c;它们不仅提供了优雅的设计思路&#xff0c;还能显著提升系统的性能…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...