算法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】再重新进行快速排序。

​​​​​​​

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

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

相关文章

IO多路复用学习

Linux中的I/O多路复用 相关基础概念 在学习I/O多路复用之前&#xff0c;先学习一些相关的基础概念&#xff0c;便于理解。 内核缓冲区和用户缓冲区 &#x1f62e; CPU 上会运行两种程序&#xff0c;一种是操作系统的内核程序&#xff08;也称为系统程序&#xff09;&#x…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 30 节&#xff09; P30《29.数据持久化-用户首选项》 实现数据持久化在harmonyOS中有很多种方式&#xff0c;比较常见的是以下两…

高项-组织通用管理

1、人力资源管理内容&#xff1a;规划、招聘、维护、提升、评价。 2、工作分析的作用&#xff1a;招聘和选择员工、发展和评价员工、薪酬政策、组织与岗位设计。 工作分析四个阶段(范围、确定方法、收集、评价): 第一阶段&#xff1a;明确工作分析范围 (1) 确定工作分析的目的 …

OpenCV教程02:图像处理系统1.0(翻转+形态学+滤波+缩放+旋转)

-------------OpenCV教程集合------------- Python教程99&#xff1a;一起来初识OpenCV&#xff08;一个跨平台的计算机视觉库&#xff09; OpenCV教程01&#xff1a;图像的操作&#xff08;读取显示保存属性获取和修改像素值&#xff09; OpenCV教程02&#xff1a;图像处理…

Redis深度解析:场景、锁、队列、Big Key与缓存优化

引言 简要介绍RedisRedis的优势和适用场景 一、Redis使用场景 缓存系统&#xff1a;缓存热点数据&#xff0c;减轻数据库压力&#xff0c;提高应用响应速度。会话存储&#xff1a;替代传统的服务器端会话存储&#xff0c;减轻服务器负载&#xff0c;实现会话数据的快速存取。…

WIN32核心编程 - 数据类型 错误处理 字符处理

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 数据类型 基本数据类型 Win32基本数据类型 错误处理 C语言中的错误处理 C中的错误处理 Win32中的错误处理 字符处理 C/C WIN32 字符处理 数据类型 基本数据类型 C/C语言定义了一系列…

Rocky Linux 9 系统OpenSSH CVE-2024-6387 漏洞修复

Rocky Linux 9系统 OpenSSH CVE-2024-6387 漏洞修复 1、漏洞修复2、修复思路3、修复方案3.1、方案一3.2、方案二 4、总结5、参考 1、漏洞修复 CVE-2024-6387&#xff1a;regreSSHion&#xff1a;OpenSSH 服务器中的远程代码执行&#xff08;RCE&#xff09;&#xff0c;至少在…

【目标检测】DINO

一、引言 论文&#xff1a; DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 作者&#xff1a; IDEA 代码&#xff1a; DINO 注意&#xff1a; 该算法是在Deformable DETR、DAB-DETR、DN-DETR基础上的改进&#xff0c;在学习该算法前&#…

find命令-查找

find命令基本用法 find命令是Linux系统中用于在文件系统中搜索文件和目录的强大工具。它可以根据多种条件来筛选文件,包括文件名、文件类型、文件大小、文件修改时间等。 常见选项和参数 -name <filename>:按照文件名进行搜索。-type <file_type>:按照文件类型进…

《IT 领域准新生暑期预习指南:开启未来科技之旅》

IT专业入门&#xff0c;高考假期预习指南 高考的落幕&#xff0c;只是人生长途中的一个逗号&#xff0c;对于心怀 IT 梦想的少年们&#xff0c;新的征程已然在脚下铺展。这个七月&#xff0c;当分数尘埃落定&#xff0c;你们即将迈向新的知识殿堂&#xff0c;而这个假期&#…

【高考志愿】交通运输工程

目录 一、专业概述 二、课程设置 三、就业前景 四、报考注意 五、未来发展 六、交通运输工程专业排名 高考志愿选择交通运输工程专业&#xff0c;无疑是一个既具远见又富有挑战性的决定。这个专业以其综合性强、实用性高的特点&#xff0c;吸引了大批有志于投身交通事业的…

centos7升级gcc到7.3.0

1、下载gcc-7.3.0源码 wget ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 2、解压gcc-7.3.0 tar -xvf gcc-7.3.0.tar.gz3、安装依赖 cd gcc-7.3.0 ./contrib/download_prerequisites ./contrib/download_prerequisites会下载对应的依赖包&#xff0c;如果下载不了的话&a…

【微代码】Linux异步执行机制work基本用法?

文章目录 背景基本代码和用法其他 背景 Linux内核提供诸多异步执行机制&#xff0c;work就是其中一种。work的提供避免了启动多个内核线程造成资源占用等问题。内核提供一个专门的work来进行处理。本文主要记录work的基本用法 基本代码和用法 #include "linux/workqueu…

Day51

JSR-303 简介 JSR全称为 Java Specification Requests&#xff0c;表示 Java 规范提案。JSR-303是 Java 为 Java Bean 数据合法性校验提供的标准框架&#xff0c;它定义了一套可标注在成员变量&#xff0c;属性方法上的校验注解。Hibernate Validatior提供了这套标准的实现。 …

Git使用[推送大于100M的文件后解救办法]

推送大于100M的文件后解救办法 本文摘录于&#xff1a;https://blog.csdn.net/u012150602/article/details/122687435只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 当有文件大于100M的时候在提交的时候没有问题,但是在push的似乎就不行…

番外篇 | 手把手教你如何去更换YOLOv5的检测头为ASFF_Detect

前言:Hello大家好,我是小哥谈。自适应空间特征融合(ASFF)的主要原理旨在解决单次检测器中不同尺度特征的不一致性问题。具体来说,ASFF通过动态调整来自不同尺度特征金字塔层的特征贡献,确保每个检测对象的特征表示是一致且最优的。本文所做出的改进是将YOLOv5的检测头更换…

程序算法设计分析

动态规划和分治、贪心相比有什么区别&#xff1f;各自的优缺点&#xff1f; 分治算法特征&#xff1a; 1&#xff09;规模如果很小&#xff0c;则很容易解决。//一般问题都能满足 2&#xff09;大问题可以分为若干规模小的相同问题。//前提 3&#xff09;利用子问题的解&#x…

O2OA(翱途)开发平台 V9.1 即将发布,更安全、更高效、更开放

尊敬的O2OA(翱途)平台合作伙伴、用户以及亲爱的开发小伙伴们&#xff0c;O2OA(翱途)平台 V9.1将于7月3日正式发布&#xff0c;届时欢迎大家到O2OA官网部署下载及体验最新版本。新版本我们在如下方面做了更大的努力&#xff1a; 1.扩展数据库兼容性和功能范围&#xff1a;在O2OA…

基于Web技术的教育辅助系统设计与实现(SpringBoot MySQL)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

汽车电子工程师入门系列——CAN 规范系列通读

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…