代码随想录算法训练营番外 刷题日记0301 || 29、两数相除,31、下一个排列

29、两数相除

思路:不断相减就是求解的最直接方法,我这样计算时间复杂度有点高

// 时间复杂度O(count*divisor)
// 空间复杂度O(1)class Solution {int res = 0;public int divide(int dividend, int divisor) {// dividend 是被除数if(dividend == 0)   return 0;if(divisor == 1)    return dividend;if(divisor == -1){if(dividend == Integer.MAX_VALUE)return -dividend;else if(dividend == Integer.MIN_VALUE)return Integer.MAX_VALUE;   // 怕的是特殊情况Integer.MIN_VALUE 除以 -1,那么就超过结果的范围了}// 不断相减就是求解的最直接方法int count = 0;long bc = (long)dividend;long c = (long)divisor;if(bc<0 && c<0){while(bc - c <= 0){bc -= c;count++;}return count;}else if(bc<0 && c>0){while(bc + c <= 0){bc += c;count++;}return -count;}else if(bc>0 && c<0){while(bc + c >= 0){bc += c;count++;}return -count;}else{while(bc - c >= 0){bc -= c;count++;}return count;}}
}

 31、下一个排列

// 时间复杂度[ O(nlogn),O(n^2) ) 
// 空间复杂度O(1)class Solution {public void nextPermutation(int[] nums) {/* 总体思路分成4步1、从后向前遍历,找到第一次出现递增的两个数,i-1与i是递增的2、其次找[i,nums.length-1]位置中最接近且比nums[i]大的元素,并与nums[i]交换3、交换完成后,对于[i,nums.length-1]进行递增的排序4、输出答案*/// 分割点就是出现序列变化的地方,因为需要一个更大的序列,所以分割点的位置就是让大的元素向前移动一位的关键位置int split = -1;int n = nums.length;for(int i=n-1; i>0; i--){if(nums[i-1] < nums[i]){// 找到了一次递减的地方// i-1位置就是分割点int j = i;  int min = i;              while(j<n){// 出现了第一个小于的,说明可以碰到仅次于分割点位置的较大元素了,则交换if(nums[j] > nums[i-1] && nums[j] < nums[min]){min = j;}j++;}int temp = nums[min];nums[min] = nums[i-1];nums[i-1] = temp;split = i-1;break;}}// 如果整个数组都是递减的,那么整个数组重新排序就可以,split为-1quickSort(nums, split+1, n-1);}public int[] quickSort(int[] a, int i, int j) {//   doQuickSort(a, n, 0, n - 1);doQuickSort(a, j - i + 1, i, j);return a;}// 快速排序public void doQuickSort(int[] a, int n, int start, int end) {if (n > 1) {int current = a[end];int minLen = 0;// 小于区间的长度int i = start;for (; i < end; i++) {if (a[i] < current) {//发现比当前数小的数,扩充小于区间int temp = a[start + minLen];a[start + minLen] = a[i];a[i] = temp;minLen++;}}a[end] = a[start + minLen];a[start + minLen] = current;//当前位置已经确定,排左右序列doQuickSort(a, minLen, start, start + minLen - 1);doQuickSort(a, n - minLen - 1, start + minLen + 1, end);}}
}

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

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

相关文章

技术栈选型的时候,ruby、go、java、vue、react应该怎么选择?

选择适合项目需求、团队技术背景和偏好、开发速度、性能要求以及可扩展性的技术栈和框架是一个综合考虑的过程&#xff0c;没有一种通用的最佳选择&#xff0c;取决于具体情况。 选择Vue.js或React应该综合考虑项目的需求、团队的技术背景和偏好、生态系统的支持和发展趋势等因…

随记-点选验证码

文字验证码&#xff08;点击文字&#xff09; 模板匹配&#xff08;从一张图片中寻找 icon&#xff09;&#xff0c;放弃&#xff0c;目前准确率不高&#xff0c;且处理过程复杂 灰度处理将 complete_image_path 截取并另存为 target_image_path&#xff0c; verify_image_path…

WPF真入门教程30--顺风物流单据管理系统

1、教程回顾 到现在为止&#xff0c;真入门系列教程已完成了29刺由浅入深地讲解&#xff0c;当然不可能讲到了WPF的所有技能点&#xff0c;但读者看到了wpf的内部各种功能及之间的联系&#xff0c;在此基础上&#xff0c;提供一个完整有效的综合项目&#xff0c;本项目采用的是…

c++知识点之 --this

在成员函数中存在。struct和class每个成员函数都隐含一个名为this的指针形参&#xff0c;并且它是该成员函数的第一个参数&#xff0c;当某个对象调用成员函数时&#xff0c;就会把该对象的地址传给被调用成员函数的隐式形参this。 this是一个指针 &#xff0c;存放的是当前对象…

加密与安全_深入了解Hmac算法(消息认证码)

文章目录 PreHMAC概述常见的Hmac算法Code随机的key的生成 KeyGeneratorHmacMD5用Hmac算法取代原有的自定义的加盐算法 HmacMD5 VS MD5HmacSHA256 Pre 加密与安全_深入了解哈希算法中我们提到&#xff0c; 存储用户的哈希口令时&#xff0c;要加盐存储&#xff0c;目的就在于抵…

操作系统系列学习——CPU管理的直观想法

文章目录 前言CPU管理的直观想法 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【…

OpenLayers线性渐变和中心渐变(径向渐变)

目录 1.前言2.添加一个面要素3.线性渐变3.1 第一个注意点3.2 第二个注意点 4.中心渐变&#xff08;径向渐变&#xff09;5.总结 1.前言 OpenLayers官网有整个图层的渐变示例&#xff0c;但是没有单个要素的渐变示例&#xff0c;我们这里来补充一下。OpenLayers中的渐变是通过fi…

python defaultdict

python中的dict是一个重要的数据类型&#xff0c;知道如何使用这个数据类型很简单&#xff0c;但是这个类型使用过程中容易进入一些误区&#xff0c;这篇文章主要对defaultdict方法的讲解&#xff0c;深入的了解dict数据类型。 字典&#xff08;dictionary&#xff09;数据类型…

编译链接实战(22)C/C++代码覆盖率统计报告生成

文章目录 GCOV 工具简介gcov 使用lcov相关编译选项 GCOV 工具简介 gcov是一个测试代码覆盖率的工具&#xff0c;它是 gcc 自带的查看代码覆盖率的工具。 与GCC结合使用&#xff0c;可以分析您的程序以帮助创建更高效、运行更快的代码&#xff0c;并发现程序中未经测试的部分。…

PCIE 4.0 L0s/L1/L2

L0是PCIE设备正常工作的状态&#xff0c;当设备链路处于非工作状态可以跳转大相应的低功耗状态&#xff0c;L0s是一种可以快速恢复到L0的低功耗状态&#xff1b;L1必须经过Reovery状态才可以恢复到L0状态&#xff1b;L2需要从Detect开始逐步进入到L0状态。它们的恢复时间依次延…

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统) 部署ffmpeg用来处理视频的各种操作 想使用ffmpeg&#xff0c;要先安装nasm&#xff0c;yasm&#xff0c;x264之后&#xff0c;否则会报错 nkvers 查看麒麟操作系统版本 cat /proc/version #查看linux版本信息 uname -a …

Android修行手册-Chaquopy中opencv、numpy的初步应用

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

SpringBoot源码解读与原理分析(三十八)SpringBoot整合WebFlux(一)WebFlux的自动装配

文章目录 前言第13章 SpringBoot整合WebFlux13.1 响应式编程与Reactor13.1.1 命令式与响应式13.1.2 异步非阻塞13.1.3 观察者模式13.1.4 响应性13.1.5 响应式流13.1.6 背压13.1.7 Reactor13.1.7.1 Publisher13.1.7.2 Subscriber13.1.7.3 Subscription13.1.7.4 Processor13.1.7.…

BF算法实现(Python,C++)

BF算法&#xff0c;即暴力(Brute Force)算法&#xff0c;是普通的模式匹配算法&#xff0c;BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配&#xff0c;若相等&#xff0c;则继续比较S的第二个字符和 T的第二个字符&#xff1b;若不相等&#xff0c;则比…

Leetcoder Day32| 贪心算法part05

763.划分字母区间 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 示例&#xff1a; 输入&#xff1a;S "ababcbacadefegdehijhklij"输出&#xff1a;[9,7…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月2日,星期六

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年3月2日 星期六 农历正月廿二 1、 气象局&#xff1a;3月份仍有5次冷空气影响我国&#xff1b;全国多地或提前入春。 2、 央行&#xff1a;将外籍来华人员移动支付单笔交易限额由1000美元提高到5000美元。 3、 神舟十七号航…

全量知识系统问题及SmartChat给出的答复 之8 三套工具之3语法解析器 之1

Q19. 问题 : 解释单词解释单词occupied 的字典条目 (word-def occupiedinterest 5type EBsubclass SEBtemplate (script $Demonstrateactor nilobject nildemands nilmethod (scene $Occupyactor nillocation nil))fill (((actor) (top-of *actor-s…

【源码】imx6ull实现触摸屏单点实验

一、本实验实验的器材&#xff1a; 1.正点原子imx6ull的阿尔法开发板v2.2 2.屏幕ALIENTEK 4.3 RGBLCD 二、实验已经移植好的文件&#xff1a; 仓库代码&#xff1a;https://gitee.com/wangyoujie11/atkboard_-linux_-driver.git 1.文件说明 23_multitouch &#xff1a;驱动代…

aws平台的ec2实例 GNU/Linux系统安装docker流程

在AWS EC2实例上安装Docker的流程与其他GNU/Linux系统基本相同。以下是在AWS EC2实例上安装Docker的一般步骤&#xff1a; 登录到AWS EC2实例&#xff1a; 使用SSH或者其他远程登录方式登录到你的GNU/Linux实例。 更新系统包管理器&#xff1a; 对于基于Amazon Linux的系统&am…

常见Prometheus exporter部署

常见Prometheus exporter部署 Prometheus部署Node exporterProcess exporterRedis exporterMySQL exporterOracleDB exporter Prometheus部署 本地部署&#xff1a; wget https://github.com/prometheus/prometheus/releases/download/v*/prometheus-*.*-amd64.tar.gz tar xv…