231217 刷题日报

1. LRU

2.LFU

3. 十字链表,加法,乘法


public class Main {public static void main(String[] args) {CrossLinkedList list = new CrossLinkedList(3, 3);list.insert(0, 0, 1);list.insert(1, 0, 5);list.insert(2, 2, 3);list.display();System.out.println("----------");CrossLinkedList listB = new CrossLinkedList(3, 3);listB.insert(0, 0, 1);// listB.insert(1, 0, 5);listB.insert(2, 2, 3);listB.display();System.out.println("----------");
/*list.add(listB);list.display();System.out.println("----------");*/list.mutiply(listB);list.display();}
}class CrossLinkedList {Node[] rheads, cheads;int rows, cols;CrossLinkedList(int rows, int cols) {this.rows = rows;this.cols = cols;rheads = new Node[rows];cheads = new Node[cols];}public void insert(int row, int col, int value) {Node newNode = new Node(row, col, value);Node currNode = rheads[row];if (null == currNode || currNode.col > newNode.col) {newNode.right = currNode;rheads[row] = newNode;} else {while(currNode.right != null && currNode.right.col < newNode.col) {currNode = currNode.right;}newNode.right = currNode.right;currNode.right = newNode;}currNode = cheads[col];if (null == currNode || currNode.row > newNode.row) {newNode.down = currNode;cheads[col] = newNode;} else {while(currNode.down != null && currNode.down.row < newNode.row) {currNode = currNode.down;}newNode.down = currNode.down;currNode.down = newNode;}}public void display() {for(int i=0; i<rows; i++) {Node currNode = rheads[i];if (null == currNode) {for(int j=0; j<cols; j++) {System.out.printf("0 ");}} else {int j=0;while (j < cols) {if (null == currNode || j < currNode.col) {System.out.printf("0 ");} else {System.out.printf("%d ", currNode.value);currNode = currNode.right;}j++;}}System.out.println();}}public void add(CrossLinkedList N) {Node pa, pb; // 新增两个用于便利两个矩阵的节点Node[] hl = new Node[this.cols];Node pre = null;// 对hl数组初始化,指向每一列的第一个非0元素for(int j=0; j<this.cols; j++) {hl[j] = this.cheads[j];}// 按照行进行遍历for(int i=0; i<this.rows; i++) {pa = rheads[i];pb = N.rheads[i];// pb=null说明矩阵N当前行的非零元素已经遍历完while (pb != null) {Node p = new Node(pb);// 第1种情况: pa为空,或者pa.col > pb.col,此时将 pb 结点插入到矩阵 A 中。if (null == pa || pa.col > pb.col) {// 如果pre=null,说明这行没有非0元素if (pre == null) {rheads[p.row] = p;} else {pre.right = p;}p.right = pa;pre = p;// 在链接好行链表后,链接到对应列的列链表种的相应位置if (this.cheads[p.col] == null || this.cheads[p.col].row > p.row) {p.down = this.cheads[p.col];this.cheads[p.col] = p;} else {p.down = hl[p.col].down;hl[p.col].down = p;}// 更新hl中的数据hl[p.col] = p;} else {// 第2种情况,pa.col < pb.col,只需移动pa的位置,继续判断pa和pb的位置if (pa.col < pb.col) {pre = pa;pa = pa.right;continue;}// 第3,4种情况,当行标和列标都相等的情况下,需要讨论两者相加的值的问题if (pa.col == pb.col) {pa.value += pb.value;if (pa.value == 0) {if (pre == null) {this.rheads[pa.row] = pa.right;} else {pre.right = pa.right;}p = pa;pa = pa.right;if (this.cheads[p.col] == p) {this.cheads[p.col] = hl[p.col] = p.down;} else {hl[p.col].down = p.down;}}}}pb = pb.right;}}}public void mutiply(CrossLinkedList list) {Node prev = null;for(int row=0; row < rows; row++) {Node pa = rheads[row];Node pb = list.rheads[row];while(pa != null) {if (pb == null) {// remove paremove(prev, pa);break;}if (pa.col < pb.col) {remove(prev, pa);pa = pa.right;} else if (pa.col > pb.col) {pb = pb.right;} else {// pb不为null,相乘pa.value *= pb.value;pa = pa.right;pb = pb.right;}prev = pa;}}}public void remove(Node prev, Node node) {if (prev == null) {rheads[node.row] = node.right;return;}prev.right = node.right;}
}class Node {int row, col, value;Node right, down;Node(int row, int col, int value) {this.row = row;this.col = col;this.value = value;}Node(Node node) {this.row = node.row;this.col = node.col;this.value = node.value;}}

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

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

相关文章

Apple Find My「查找」认证芯片找哪家,认准伦茨科技ST17H6x芯片

深圳市伦茨科技有限公司&#xff08;以下简称“伦茨科技”&#xff09;发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家&#xff0c;该平台提供可通过Apple Find My认证的Apple查找&#xff08;Find My&#xff09;功能集成解决方案。…

HarmonyOS与Data-Ability基本概念的使用方法及使用步骤

基本概念 使用Data模板的Ability&#xff08;以下简称“Data”&#xff09;有助于应用管理其自身和其他应用存储数据的访问&#xff0c;并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享&#xff0c;也支持跨设备不同应用的数据共享。 数据的存放形式多…

【python+requests】接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

山海鲸可视化软件:打破数据孤岛,支持多种数据源连接

在之前的文章中为大家介绍了山海鲸可视化软件的主要应用场景&#xff0c;那么作为山海鲸可视化软件的开发者&#xff0c;我希望大家能更全面的了解我们这款免费的数字孪生软件&#xff0c;从而轻松上手。本文从数字孪生第一步接入数据开始为大家介绍一下山海鲸可视化软件支持的…

2021年数维杯国际大学生数学建模D题2021年电影市场票房波动模型分析求解全过程文档及程序

2021年数维杯国际大学生数学建模 D题 2021年电影市场票房波动模型分析 原题再现&#xff1a; 1、电影票房预测建模背景   随着人们文化消费需求的增加&#xff0c;电影院和银幕的数量不断增加&#xff0c;我国的电影产业不断呈现出繁荣景象。2019年&#xff0c;全国电影票房…

12、ble_mesh_vendor_model 服务端,自定义模型

1、初始化流程&#xff0c;存储初始化&#xff0c;nvs擦除&#xff0c; board_init();初始化LED。 2、bluetooth_init();ble协议栈初始化 3、ble_mesh_get_dev_uuid(dev_uuid);//获取设备uuid加载到mac&#xff0c;后两位dev uuid 4、ble_mesh_init();//ble mesh协议栈初始化。…

质因数个数

package 课程; import java.util.Scanner; public class 质因数个数 { public static void main(String[] args) { Scanner scanner new Scanner(System.in); long n 1200000; int ans 1; int cnt 0; for(int i 2;i<Math.sqrt(n);i) { // if(n%i0) ans; cnt 0; whil…

【ubuntu】Linux常用视频播放软件

在Ubuntu操作系统上&#xff0c;有许多常用的视频播放软件可供选择。以下是一些常见的视频播放软件&#xff1a; 1. VLC 媒体播放器 安装命令&#xff1a; sudo apt-get install vlcVLC是一个开源、跨平台的多媒体播放器&#xff0c;支持播放几乎所有的音频和视频格式。 2.…

Nginx编译安装+Nginx模块详解+Nginx虚拟主机(新版)

Nginx编译安装Nginx模块详解Nginx虚拟主机 Nginx编译安装Nginx模块详解Nginx虚拟主机一、编译安装Nginx服务二、nginx版本升级1、nginx平滑升级的步骤2、示例 三、添加Nginx系统服务1、使用init.d脚本2、使用 systemd 服务配置 四、认识Nginx服务的主配置文件 nginx.conf1、全局…

13.Spring 整合 Kafka + 发送系统通知 + 显示系统通知

目录 1.Spring 整合 Kafka 2.发送系统通知 2.1 封装事件对象 2.2 开发事件的生产者和消费者 2.3 触发事件&#xff1a;在评论、点赞、关注后通知​编辑 3.显示系统通知 3.1 通知列表 3.1.1 数据访问层 3.1.2 业务层 3.1.3 表现层 3.2 开发通知详情 3.2.1 开发数据…

HttpRunner接口自动化测试框架

简介 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。 项目地址&#xff1a;GitHub - httprunner/httprunner: HttpRunner 是一个开源的 API/UI…

8.鸿蒙app java代码构建用户界面

鸿蒙app java代码构建用户界面 background_ability_main.xml <?xml version"1.0" encoding"UTF-8" ?> <shape xmlns:ohos"http://schemas.huawei.com/res/ohos"ohos:shape"rectangle"><solidohos:color"#8F71…

VMwareKali进行WIFI密码爆破

注&#xff1a;本实验所用仪器全为自己使用&#xff01;请不要侵犯他人权益 文章目录 一、连接无线网卡二、抓取TCP握手包三、aircrack-ng跑包和hashcat跑包1.aircrack2.Hashcat 环境&#xff1a; VMware Workstation 16 Pro kali-linux-2023.1 64位 python3.9.13 RT3070-U…

HarmonyOS应用开发者基础认证考试满分答案(100分)【全网最全-不断更新】【鸿蒙专栏-27】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…

oracle怎么存放json好

Oracle数据库提供了多种方式来存储JSON数据。你可以将JSON数据存储在VARCHAR2、CLOB或BLOB数据类型中&#xff0c;或者使用Oracle提供的JSON数据类型。 如果你选择使用VARCHAR2数据类型来存储JSON数据&#xff0c;你可以直接将JSON字符串存储在其中。例如&#xff1a; CREATE…

[论文笔记] 大模型gpu机器推理测速踩坑 (llama/gpt类)

cpu没报错,换gpu就报错。以下是一些踩坑: 坑1:要指定gpu,可以在import torch之前指定gpu。 model = LlamaForCausalLM.from_pretrained(model_path, trust_remote_code=True).to(device) 报错: RuntimeError(Expected all tensors to be on the same device, but found …

C#基础——条件语句、循环语句、goto语句

C#基础——条件语句和循环语句 1、条件语句 根据判断条件&#xff0c;执行不同的代码片段。 if…else 语法结构&#xff1a; if(条件){ 条件为true时执行的代码 } else { 条件为false时执行的代码 } if (1 2) { //小括号里面是判断条件&#xff0c;返回的是一个布尔值Console…

SAR舰船检测数据集总结

Ships in Satellite Imagery 该数据集由从加利福尼亚旧金山湾和圣佩德罗湾地区收集的 Planet 卫星图像中提取的图像芯片组成。它包括 4000 张 80x80 RGB 图像&#xff0c;标有“船”或“无船”分类。图像芯片源自PlanetScope全画幅视觉场景产品&#xff0c;经正射校正至3米像素…

《ThreadLocal使用与学习总结:2023-12-15》由浅入深全面解析ThreadLocal

由浅入深全面解析ThreadLocal 目录 由浅入深全面解析ThreadLocal简介基本使用ThreadLocal与synchronized的区别ThreadLocal现在的设计&#xff08;JDK1.8&#xff09;ThreadLocal核心方法源码分析ThreadLocalMap源码分析弱引用与内存泄露&#xff08;内存泄漏和弱引用没有直接关…

traceroute命令详解

traceroute命令详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 深入解析Traceroute命令&#xff1a;揭秘网络世界的奥秘 在网络世界中&#xff0c;信息的传递…