`

LintCode - Sort Colors II

阅读更多

Given an array of n objects with k different colors (numbered from 1 to k), sort them so that objects of the same color are adjacent, with the colors in the order 1, 2, ... k.

 

Have you met this question in a real interview? 

Yes
Example

Given colors=[3, 2, 2, 1, 4]k=4, your code should sort colors in-place to [1, 2, 2, 3, 4].

Note

You are not suppose to use the library's sort function for this problem.

 

Challenge

A rather straight forward solution is a two-pass algorithm using counting sort. That will cost O(k) extra memory. Can you do it without using extra memory?

Solution:

 

public void sortColors2(int[] colors, int k) {
    int n = colors.length;
    int[] B = new int[n];
    int[] C = new int[k+1];
    for(int a:colors) C[a]++;
    for(int i=1; i<=k; i++) {
        C[i] += C[i-1];
    }
    for(int a:colors) {
        C[a]--;
        B[C[a]] = a;
    }
    System.arraycopy(B, 0, colors, 0, n);
}

 

 

Reference:

https://zh.wikipedia.org/wiki/计数排序

http://www.geeksforgeeks.org/counting-sort/

https://www.cs.usfca.edu/~galles/visualization/CountingSort.html

分享到:
评论

相关推荐

    js-leetcode题解之75-sort-colors.js

    javascript js_leetcode题解之75-sort-colors.js

    前端开源库-import-sort-parser-babylon

    **前端开源库-import-sort-parser-babylon** 在前端开发中,代码组织和规范性是提升团队协作效率和代码可维护性的重要因素。`import-sort-parser-babylon` 是一款专门针对JavaScript导入语句进行自动排序的工具,它...

    python-leetcode题解之075-Sort-Colors

    python python_leetcode题解之075_Sort_Colors

    数组的排序方法-sort(教辅)

    数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序...

    c语言-leetcode题解之0075-sort-colors.zip

    c c语言_leetcode题解之0075_sort_colors.zip

    前端开源库-eslint-plugin-sort-imports-es6-autofix

    前端开源库-eslint-plugin-sort-imports-es6-autofixeslint-plugin-sort-imports-es6-autofix,一个排序导入规则,可以正确区分es6导入类型。

    Wiggle-Sort-II.rar_WIGGLE

    在这个名为 "Wiggle Sort II" 的问题中,我们主要关注如何实现这个排序算法。通常,摇摆排序的实现会涉及到数组操作和比较,可能还会用到快速排序、归并排序等经典排序算法的思想,但摇摆排序通常不需要完全排序整个...

    drag-sort-listview

    "drag-sort-listview"是一个专为Android平台设计的开源库,它允许用户通过拖放操作来排序ListView中的项目。在Android开发中,ListView是展示大量数据的常用组件,但默认情况下,ListView并不支持直接的拖放排序功能...

    Android应用源码之drag-sort-listview-master.rar

    《Android应用源码解析:Drag-Sort-Listview深度探讨》 在Android开发中,我们经常需要实现可拖动排序的列表视图,这在诸如购物应用、任务管理器等场景下尤为常见。Drag-Sort-Listview是一个开源库,它为Android...

    deep-sort-pytorch-master-yolov3配置好的代码

    《深度学习目标追踪技术:基于Deep-Sort与PyTorch的YOLOv3实现详解》 在计算机视觉领域,目标追踪是一项重要的任务,它能够帮助系统持续关注在视频或序列图像中的特定对象。Deep-Sort是一种高效且准确的目标追踪...

    sample-sort-colors

    样品分类颜色 使用JavaScript将多种随机颜色分类为彩虹色的示例。 $ git clone https://github.com/tsuyoshiwada/sample-sort-colors.git $ cd sample-sort-colors $ npm install $ gulp

    Hybrid-SORT 目标追踪,技术报告

    Hybrid-SORT 目标追踪技术报告 Hybrid-SORT 目标追踪技术报告是计算机视觉领域中的一个关键技术报告,主要研究目标追踪算法的设计和实现。在这个报告中,我们将深入探讨目标追踪算法的原理、优缺点和应用场景,并对...

    前端开源库-num-sort.zip

    开源库`num-sort`正是为了解决这个问题而设计的,它专注于数字排序,提供了高效且灵活的解决方案。`num-sort`库简化了对数组中数字的排序操作,使得开发者能够更便捷地处理各种复杂的排序需求。 首先,让我们深入...

    仿微信朋友圈图片拖拽排序 wx-drag-sort.rar

    本项目“仿微信朋友圈图片拖拽排序 wx-drag-sort.rar”专注于实现一个类似于微信朋友圈的功能,让用户可以通过拖拽操作对上传的图片进行排序。这种交互方式提高了用户体验,使得用户可以更加直观和便捷地管理自己的...

    前端开源库-num-sort

    "num-sort"是一个专为前端开发者设计的开源库,致力于提供快速且灵活的数字数组排序功能。在这个库中,你可以找到一系列用于处理数字排序的工具和方法,帮助优化你的前端项目。 首先,我们来理解“num-sort”的核心...

    21.[开源][安卓][拖拽]drag-sort-listview-master

    21.[开源][安卓][拖拽]drag-sort-listview-master DragSortListView(DSLV)是Android ListView的一个扩展,支持拖拽排序和左右滑动删除功能。重写了TouchInterceptor(TI)类来提供更加优美的拖拽动画效果。 DSLV...

    论文研究-Apriori-sort算法研究.pdf

    Apriori-sort算法是在Apriori算法基础上的改进,基本思想是把事务数据库变为以度表示的事务度数据库,并对事务度数据库进行排序。Apriori-sort算法查找频繁项集时,只扫描数据库Dd中满足d(Ck)≦d(Ti)的事务。对...

    开源项目-jpillora-media-sort.zip

    开源项目“jpillora-media-sort”是一个用于自动化整理电影和电视剧的工具,旨在帮助用户更加高效地管理和组织他们的媒体库。这个项目的核心功能是根据行业标准和用户自定义规则对媒体文件进行分类和命名,从而使得...

    prettier-plugin-sort-imports:一个漂亮的插件,用于按提供的RegEx顺序对Typescript和javascript文件中的导入进行排序

    npm install --save-dev @trivago/prettier-plugin-sort-imports 或者,使用纱线 yarn add --dev @trivago/prettier-plugin-sort-imports 用法 在更漂亮的配置文件中添加订单。 module.exports = { "printWidth":...

    YOLOv8-DeepSORT-code.zip

    YOLOv8-DeepSORT_code.zipYOLOv8-DeepSORT_code.zipYOLOv8-DeepSORT_code.zipYOLOv8-DeepSORT_code.zip YOLOv8-DeepSORT_code.zip

Global site tag (gtag.js) - Google Analytics