zoukankan      html  css  js  c++  java
  • 华为笔试题之排序去重

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

     1 def parttion(nums,left,right):
     2     # 基准值
     3     p = nums[left]
     4     low, high = left, right
     5     while low < high:
     6         while (low < high) and (nums[high] >= p):
     7             high -= 1
     8         nums[low], nums[high] = nums[high], nums[low]
     9         while (low < high) and (nums[low] <= p):
    10             low += 1
    11         nums[low], nums[high] = nums[high], nums[low]
    12 
    13     return low
    14 
    15 def quickSort(nums,left,right):
    16     #找见基准值的下标,也就是循环遍历汇合的地方
    17     if left < right:
    18         p = parttion(nums,left,right)
    19         quickSort(nums,left,p-1)
    20         quickSort(nums,p+1,right)
    21     return nums
    22 
    23 def sortedSet(nums):
    24     #首先快速排序
    25     #其次去重(双指针)
    26     nums = quickSort(nums,0,len(nums) - 1)
    27     setNum = [nums[0]]
    28     i, j = 0, 1
    29     while j <= (len(nums) - 1):
    30         if nums[i] != nums[j]:
    31             setNum.append(nums[j])
    32             i = j
    33             j += 1
    34         else:
    35             j += 1
    36 
    37     return setNum
  • 相关阅读:
    再探最大公约数
    非旋treap
    初赛毒瘤汇总(持续更新中)
    架构漫谈阅读笔记五--以豆瓣得基础架构为例
    架构设计小论文
    第一阶段
    架构漫谈阅读笔记六--以淘宝数据魔方技术架构解析为例
    学习进度第八周
    架构漫谈阅读笔记一
    软件架构之 Refined Architecture阶段
  • 原文地址:https://www.cnblogs.com/xiaodangdang/p/13528027.html
Copyright © 2011-2022 走看看