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

算法day1 两数之和 两数相加 冒泡排序 快速排序

        两数之和

        最简单的思维方式肯定是去凑两个数,两个数的和是目标值就ok。这里两遍for循环解决。

 

          两数相加

                        敲了一晚上哈哈,结果超过int范围捏,难受捏。

public class Test2 {public static void main(String[] args) {
//        ListNode l1 = new ListNode(2);
//        l1.next = new ListNode(4);
//        l1.next.next = new ListNode(3);
//
//        ListNode l2 = new ListNode(5);
//        l2.next = new ListNode(6);
//        l2.next.next = new ListNode(4);ListNode l1 = new ListNode(5);ListNode l2 = new ListNode(5);ListNode listNode = new Test2().addTwoNumbers(l1, l2);System.out.println("l = " + listNode.val);System.out.println("l = " + listNode.next.val);
//        System.out.println("l = " + listNode.next.next.val);//        for (int i = 0; ; i++) {
//            ListNode l = listNode.next;
//            if (l.next != null) {
//                System.out.println("l = " + l.val);
//            }else return;
//        }}public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//            Map map = new HashMap();
//            map.put("l1",l1.val+l1.next.val+l1.next.next.val)int num1 = l1.val;System.out.println("num1 = " + num1);int num2 = l2.val;ListNode l = l1.next;ListNode ll = l2.next;for (int i = 1; ; i++) {if ( l != null && l.next != null  ){num1 += l.val*Math.pow(10,i);l =  l.next;} else{if ( l != null  ){num1 +=  l.val*Math.pow(10,i);}System.out.println("num1 = " + num1);for (int j = 1; ; j++) {if (ll != null && ll.next != null){num2 += ll.val*Math.pow(10,j);ll =  ll.next;}else{if (ll != null ){num2 += ll.val*Math.pow(10,j);}System.out.println("num2 = " + num2);int temp = num1 +num2;System.out.println("temp = " + temp);int digit;int place = 1;  //位数ListNode lll = new ListNode();int count = 0;while (temp != 0) {temp = temp / 10;++count;}temp = num1 +num2;if (temp == 0)count=1;ListNode listNode = new ListNode();Map<String, ListNode> map =null;for (int i1 = 0; i1 < count; i1++) {digit = temp % 10;temp = temp / 10;System.out.println("Digit at place " + place + " is: " + digit);
//                            lll.val = digit;
//                             lll = lll.next;if (i1 == 0){lll.val = digit;if (count!=1){lll.next =   listNode;}}else if (i1 == 1){map = new HashMap<>();map.put("listNode"+i1,new ListNode());listNode.val = digit;if (count==2)return lll;listNode.next = map.get("listNode"+i1);System.out.println("map.get(\"listNode111\"+i1).val = " + map.get("listNode"+i1).val);} else{map.get("listNode"+(i1-1)).val = digit;if (i1==count-1)return lll;map.put("listNode"+i1,new ListNode());map.get("listNode"+(i1-1)).next = map.get("listNode"+i1);System.out.println("map.get(\"listNode222\"+i1).val = " + map.get("listNode"+i1).val);}place *= 10;}return lll;}}}}}}//两数求和
class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next;}
}

        冒泡排序  

        有这样一个数组:[ 6,1,2,4,6,2  ]  冒泡排序是将相邻两个元素比大小转换位置最终实现从小到大或者从大到小排序的过程。

        首先关注第一个元素6:

                6和1比转换位置

                6和2比转换位置

                6和4比转换位置

                6和6比不动。

                6和2比转换位置

        再然后第二个元素到最后一个元素。这样每一个元素都找到他们对应的位置。

public static void sort1(int[] data){for (int i = 0; i < data.length; i++) {for (int j = 0; j < data.length - i - 1; j++) {if (data[j] > data[j + 1]){int k = data[j];data[j] = data[j + 1];data[j + 1] = k;}}}}

        快速排序

排序——快速排序(Quick sort)-CSDN博客    快速排序底层是递归的思想。

        有这样一个数组:[ 6,1,2,4,6,2  ] ,快速排序是有左右两个数组的下标指针,一个基准数。

一开始 :

                左指针指向最左边  

                右指针指向最右边

                基准数默认初始值为  最左边

                左指针负责挑出大于基准值的,右指针负责挑出小于基准值的。当左右指针相遇时,将数组分为左右两个以基准值为界限的小数组和大数组。

                然后左右两个数组递归。


        从右指针开始比,2比基准数6小就和左指针交换位置,同时左指针的值6赋给基准值6.

        这时,左指针位置下移到1

        再从左指针开始比,1比基准值6小,2比基准值6小,4比基准值6小,6比基准值6不大

        左右指针相遇时 将基准值6赋给右【2,1,2,4,6 ,6

        这个时候的小数组是【2,1,2,4,6】 大数组【6】再重新进行快速排序。

​​​​​​​

相关文章:

算法day1 两数之和 两数相加 冒泡排序 快速排序

两数之和 最简单的思维方式肯定是去凑两个数&#xff0c;两个数的和是目标值就ok。这里两遍for循环解决。 两数相加 敲了一晚上哈哈&#xff0c;结果超过int范围捏&#xff0c;难受捏。 public class Test2 {public static void main(String[] args) { // ListNode l1 …...

Rust监控可观测性

可观测性 在监控章节的引言中&#xff0c;我们提到了老板、前端、后端眼中的监控是各不相同的&#xff0c;那么有没有办法将监控模型进行抽象、统一呢&#xff1f; 来简单分析一下&#xff1a; 业务指标实时展示&#xff0c;这是一个指标型的数据( metric )手机 APP 上传的数…...

SVN 的忽略(Ignore)和递归(Recursively)以及忽略部分

SVN中忽略大家经常用到&#xff0c;但总是似懂非懂&#xff0c;下面就详细展开说明一下忽略如何设置。 两个忽略 通常设置忽略都是文件夹和里面的文件都忽略。 设置忽略我们通常只需要鼠标右键点击忽略就可以了&#xff0c;如图&#xff1a; 第一个忽略用的最多&#xff0c;…...

vue3开发过程中遇到的一些问题记录

问题&#xff1a; vue3在使用 defineProps、defineEmits、defineExpose 时不需要import&#xff0c;但是 eslint会报错error defineProps is not defined no-undef 解决方法&#xff1a; 安装 vue-eslint-parser 插件&#xff0c;在 .eslintrc.js 文件中添加配置 parser: vue-e…...

Jedis、Lettuce、RedisTemplate连接中间件

jedis就像jdbc一样&#xff0c;用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…...

【C++】继承(详解)

前言&#xff1a;今天我们正式的步入C进阶内容的学习了&#xff0c;当然了既然是进阶意味着学习难度的不断提升&#xff0c;各位一起努力呐。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&#xff23;学习 &#x1f448; &#…...

网络io与select,poll,epoll

前言 网络 IO&#xff0c;会涉及到两个系统对象&#xff0c;一个是用户空间调用 IO 的进程或者线程&#xff0c;另一个是内核空间的内核系统&#xff0c;比如发生 IO 操作 read 时&#xff0c;它会经历两个阶段&#xff1a; 1. 等待数据准备就绪 2. 将数据从内核拷贝到进程或…...

【Linux】多线程(一万六千字)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 线程的概念 线程的理解(Linux系统为例) 在Linux系统里如何保证让正文部分的代码可以并发的去跑呢&#xff1f; 为什么要有多进程呢&#xff1f; 为…...

sh脚本笔记2

test条件测试 语法 条件测试语法说明语法1&#xff1a;test <测试表达式>这是利用test命令进行条件测试表达式的方法。test命令和“<测试表达式>”之间至少有一个空格语法2&#xff1a;[ <测试表达式> ]这是通过[]&#xff08;单中括号&#xff09;进行条件…...

js替换对象里面的对象名称

data为数组&#xff0c;val为修改前的名称&#xff0c;name为修改后的名称 JSON.parse(JSON.stringify(data).replace(/val/g, name)) &#xff1b; 1.替换data里面的对象tenantInfoRespVO名称替换成tenantInfoUpdateReqVO 2.替换语句&#xff1a; 代码可复制 let tenantInf…...

鸿蒙开发设备管理:【@ohos.settings (设置数据项名称)】

设置数据项名称 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块提供设置数据项的访问功能相关接口的说明及示例。 导入模块 import settings from ohos.settings;settings.getUri…...

STM32之五:TIM定时器(2-通用定时器)

目录 通用定时器&#xff08;TIM2~5&#xff09;框图 1、 输入时钟源选择 2、 时基单元 3 、输入捕获&#xff1a;&#xff08;IC—Input Capture&#xff09; 3.1 输入捕获通道框图&#xff08;TI1为例&#xff09; 3.1.1 滤波器&#xff1a; 3.1.2 边沿检测器&#xf…...

【分布式系统】监控平台Zabbix对接grafana

以前两篇博客为基础 【分布式系统】监控平台Zabbix介绍与部署&#xff08;命令截图版&#xff09;-CSDN博客 【分布式系统】监控平台Zabbix自定义模版配置-CSDN博客 一.安装grafana并启动 添加一台服务器192.168.80.104 初始化操作 systemctl disable --now firewalld set…...

操作系统真象还原:编写硬盘驱动程序

第13章-编写硬盘驱动程序 这是一个网站有所有小节的代码实现&#xff0c;同时也包含了Bochs等文件 13.1 硬盘及分区表 13.1.1 创建从盘及获取安装的磁盘数 要实现文件系统&#xff0c;必须先有个磁盘介质&#xff0c;虽然咱们己经有个虚拟磁盘 hd60M.img&#xff0c;但它只…...

firewalld防火墙(二)

一&#xff1a;firewalld高级配置 1&#xff1a;关于iptables的知识 iptables 是Linux系统中传统的命令行防火墙管理工具&#xff0c;它基于内核的netfilter框架工作&#xff0c;用于配置和管理网络规则集&#xff0c;比如过滤&#xff08;允许/拒绝&#xff09;进出的数据包…...

Android-悬浮窗口

在Android系统中&#xff0c;如果应用需要弹出一个悬浮窗口&#xff0c;就需要申请一项特殊权限 <uses-permission android:name"android.permission.SYSTEM_ALERT_WINDOW"/>在Android O之前的系统中申请了该权限后&#xff0c;再给对应的window设置 WindowM…...

打破僵局:Foxit Reader无法打开的终极解决方案

打破僵局&#xff1a;Foxit Reader无法打开的终极解决方案 在数字化阅读时代&#xff0c;Foxit Reader作为一款广受欢迎的PDF阅读器&#xff0c;其打不开的问题无疑会给用户带来诸多不便。本文将为您提供全面的解决方案&#xff0c;从基础检查到高级技巧&#xff0c;确保您能够…...

[调试] JTAG下运行正常,从QSPI或者SD卡启动则无响应,如何查找问题

[调试] JTAG下运行正常&#xff0c;从QSPI或者SD卡启动则无响应&#xff0c;如何查找问题 一、问题现象二、用自定义fsbl替代系统默认的fsbl1. 新建fsbl_new2. 如果提示缺少xilffs库3. 使能调试信息输出 三. 启动成功和失败情况下的典型输出1. JTAG启动模式: 正常加载2. QSPI启…...

Linux内核 -- 多线程之wait_event用法

Linux Kernel 中 wait_event 的高级用法及注意事项 在Linux内核编程中&#xff0c;wait_event 系列函数是用于实现进程等待和事件通知机制的重要工具。本文将详细介绍 wait_event 的高级用法以及注意事项。 1. 基本用法 wait_event 系列宏主要包括以下几种形式&#xff1a; …...

双指针系列第 8 篇:盛水最多的容器。几句话讲明白!

Leetcode 题目链接 思路 取首尾双指针和水量如下所示&#xff0c;设高度函数为 h ( i ) h(i) h(i)&#xff0c;在下图中 h ( l ) < h ( r ) h(l) < h(r) h(l)<h(r)。 观察以 l l l 为左边界所能构成的其他水量&#xff0c;与矮的右边界搭配结果如下。 与高的…...

Docker Compose 多服务编排实战:从零搭建微服务架构

Docker Compose 多服务编排实战&#xff1a;从零搭建微服务架构 目录 为什么需要 Docker Compose&#xff1f;实战项目架构环境准备核心服务搭建高级特性&#xff1a;负载均衡与服务发现日志集中管理&#xff08;EFK 栈&#xff09;生产环境最佳实践常见问题排查 为什么需要 …...

从FCN到U-Net:盘点深度学习图像分割中,那些‘放大’特征图的秘密武器与选型指南

从FCN到U-Net&#xff1a;解码图像分割中的特征图放大技术选型 在构建图像分割模型时&#xff0c;特征图的上采样操作往往是决定最终分割精度的关键环节之一。不同于分类任务只需输出一个类别标签&#xff0c;分割网络需要对每个像素进行分类&#xff0c;这就要求网络能够将低分…...

Qwen3.5-4B-Claude-Opus实战案例:用推理链输出提升技术沟通准确性

Qwen3.5-4B-Claude-Opus实战案例&#xff1a;用推理链输出提升技术沟通准确性 1. 模型介绍与核心能力 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型&#xff0c;专门针对结构化分析、分步骤回答以及代码与逻辑类问题的处理能力进…...

流式清洗新标准:Polars 2.0 Streaming ETL在Kafka-ClickHouse链路中的低延迟落地(端到端<120ms)

第一章&#xff1a;流式清洗新标准&#xff1a;Polars 2.0 Streaming ETL在Kafka-ClickHouse链路中的低延迟落地&#xff08;端到端<120ms&#xff09; Polars 2.0 引入的原生流式执行引擎&#xff08;Streaming Execution Engine&#xff09;彻底重构了传统批式DataFrame处…...

【生产环境实录】Mojo嵌入Python解释器时core dump突增300%:我们如何通过LLVM IR层Hook定位并修复内存所有权越界

第一章&#xff1a;【生产环境实录】Mojo嵌入Python解释器时core dump突增300%&#xff1a;我们如何通过LLVM IR层Hook定位并修复内存所有权越界问题现象与紧急响应 上线后72小时内&#xff0c;Mojo服务在调用 PyRun_String 执行动态Python代码片段时&#xff0c;core dump率从…...

机器人手臂相机 vs 抓手相机:5个关键区别与选型指南(附避坑技巧)

机器人手臂相机 vs 抓手相机&#xff1a;5个关键区别与选型指南&#xff08;附避坑技巧&#xff09; 在工业自动化领域&#xff0c;视觉引导系统如同机器人的"眼睛"&#xff0c;而相机安装位置的选择往往决定了整个系统的精度与可靠性。当工程师面对手臂相机&#xf…...

HDMI设备开发必看:EDID/E-EDID数据结构全解析(附实战代码)

HDMI设备开发实战&#xff1a;EDID/E-EDID二进制解析与工程实现 当你的HDMI设备无法正确识别显示器分辨率时&#xff0c;屏幕闪烁或黑屏的瞬间是否让你抓狂&#xff1f;作为连接数字世界的桥梁&#xff0c;EDID&#xff08;Extended Display Identification Data&#xff09;就…...

Sqoop网络传输优化指南:从数据传输机制到带宽调优实战

Sqoop网络传输优化指南&#xff1a;从数据传输机制到带宽调优实战1. 引言&#xff1a;数据迁移的命脉在于网络2. Sqoop数据传输机制深度解析2.1 架构设计&#xff1a;基于MapReduce的并行传输2.2 导入数据的工作机制2.3 导出数据的工作机制2.4 网络交互的核心模式3. 优化网络带…...

AsyncSerial:嵌入式非阻塞串口通信实现

1. AsyncSerial 库深度解析&#xff1a;面向嵌入式实时系统的非阻塞串口通信实现 在嵌入式系统开发中&#xff0c;串口&#xff08;UART/USART&#xff09;通信因其硬件资源占用少、协议简单、调试便捷等优势&#xff0c;始终是固件层最基础且高频使用的外设接口。然而&#xf…...

从数组到哈夫曼树:用Python代码图解软考数据结构核心算法

从数组到哈夫曼树&#xff1a;Python实战软考核心数据结构 1. 线性结构的Python实现 1.1 顺序栈与队列的实现 Python的列表(list)天然适合实现顺序存储结构。我们先来看栈的实现&#xff1a; class ArrayStack:def __init__(self, capacity10):self._items []self._capacity …...