《程序员代码面试指南》第八章 数组和矩阵问题 数组的partition 调整
2024-08-30 07:58:48
####题目
数组的partition 调整
####java代码
package com.lizhouwei.chapter8;
/**
* @Description: 数组的partition 调整
* @Author: lizhouwei
* @CreateDate: 2018/5/9 21:24
* @Modify by:
* @ModifyDate:
*/
public class Chapter8_23 {
public void leftUnique(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
int left = 0;
int right = 1;
while (right < arr.length) {
if (arr[left] != arr[right++]) {
swap(arr, ++left, right - 1);
}
}
}
public void sort(int[] arr) {
int left = -1;
int index = 0;
int right = arr.length - 1;
while (index < right) {
if (arr[index] == 0) {
swap(arr, index++, ++left);
} else if (arr[index] == 2) {
swap(arr, index, right--);
} else {
index++;
}
}
}
public void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
//测试
public static void main(String[] args) {
Chapter8_23 chapter = new Chapter8_23();
int[] arr = {1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9};
chapter.leftUnique(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
int[] arr1 = {1, 2, 0, 0, 1, 2, 2, 1, 0, 0};
chapter.sort(arr1);
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
}
}
####结果
最新文章
- sql group by 理解
- Enter password for default keyring to unlock
- mysql中slow query log慢日志查询分析
- 502 Bad Gateway什么意思
- centos -bash-4.1$ 不显示用户名路径
- php对图片反色处理
- Android选项卡TabHost方式实现
- php5.3 不支持 session_register() 此函数已启用的解决方法
- UVa1628 UVaLive5847 Pizza Delivery
- 排序算法 Java实现版
- jquery全选框的实现
- springMvc项目的搭建,暂时没有整合持久层框架(java Config配置对比xml配置)
- byte[] Base64 Stream 之间相互转换
- 多米诺骨牌放置问题(状压DP)
- Understanding ROS Services and Parameters
- 【代码笔记】Web-CSS-CSS background背景
- springboot自动生成mysql的DAO层代码
- Java构造器与构建器的使用
- DRF框架之视图方法的几个封装好的模块介绍(第三天)
- Android 简历 怎么写? 月薪10K,20K+, 怎么拿到面试?