zoukankan      html  css  js  c++  java
  • 【面试编程题】巧妙排序:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。

    题目来自陈利人的面试微信平台:待字闺中 

    题目描述如下:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。 希望大家能够相出多多的思路。比如,最小的空间,最少的次数。

    首先的思路肯定是,时间复杂度最高的一种,按顺序扫描数组,遇到一个1,扔到最前面,遇到一个3,扔到最后面,这样的时间复杂度为O(n2)。

    其次可以采用快排的交换思想,第一遍顺序扫描整个数组,分三种情况:1)数字为1,从数组开始后找第一个出现的数字2或者3,与本位置的1相对换;2)数字为2,从2的位置+1往后面找数字1,与本位置的2相对换;3)数字为3,不做处理,因为3本来就应该排在最后面的。这个时间复杂度在最坏情况下貌似还是O(n2

    第三种思路可以是以空间换时间的做法,申请一个与原数组相同大小的空间,扫描数组三遍,依次找出数组中为1,2,3,的元素,并依次添加到数组中。


    其他的待会儿再想,应该还可以优化 

  • 相关阅读:
    94. Binary Tree Inorder Traversal
    101. Symmetric Tree
    38. Count and Say
    28. Implement strStr()
    实训团队心得(1)
    探索性测试入门
    LC.278. First Bad Version
    Search in Unknown Sized Sorted Array
    LC.88. Merge Sorted Array
    LC.283.Move Zeroes
  • 原文地址:https://www.cnblogs.com/xiawen/p/3203582.html
Copyright © 2011-2022 走看看