问题描述
给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)
解决思路
- 1 当前数<目标 当前数和 <区的下一个交换 <区 向右扩 当前数跳下一个
- 2 当前数=目标 当前数直接跳下一个
- 3 当前数>目标 当前数和 >区前一个交换 <区左扩 当前数不变
方法如下
新创建一个公众号 Rockey小何同学 想相互交流的同学可以关注一下哈! 感谢支持!
问题描述
给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)
解决思路
方法如下
上一篇:使用工厂来解耦
下一篇:JAVA中a++和++a的区别
系统问题排查
...
上面主要是讲了荷兰国旗问题的一个小分支,这属于核心算法,具体如何实现整体的,大家可以自行查阅,其实这个算法可以自己去
文章目录问题一问题二快排问题一给定一-个数组arr,和一-个数num,请把小于等于num的数
利用指针进行排序
没事写着玩-.-#include#incl...
1.列表的浅复制和深复制的区别# -*- coding: utf-8 -*- """ Created on Sat Mar 10 16:45:11 2018 @author: lizihua """ import copy #浅复制 #列表是一维的 lst1=[1,1,1,1,1] lst2=copy.copy(lst1) #lst2=lst1.copy() #同上 lst1[1]=
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M