第四小的数

题目描述

给定一个数组,输出其中第四小的整数(相等的整数只计算一次)。

输入

第一行一个正整数,4<=n<=1000.
第二行个整数,正整数的值域为[-109,109].

输出

一行一个整数。

样例输入 Copy

7
3 3 2 0 -1 -1 8

样例输出 Copy

3

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main (){
    
    int n;
    cin>>n;
    int a[n];
    int t=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    sort(a,a+n);
    for(int j=0;j<n;j++){
        if (a[j]!=a[j+1]){
            t=t+1;
        }
        if(t==4){
            cout<<a[j]<<endl;
            break;    }
    }
    
    return 0;   
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python内置的排序函来解决这个问题,首先将数组排序,然后返回第三个元素即可。代码如下: ```python def third_smallest(arr): arr.sort() return arr[2] ``` 另外,如果要找到第k小的,可以使用快速选择算法,时间复杂度为O(n),代码如下: ```python import random def partition(arr, low, high): pivot_index = random.randint(low, high) pivot = arr[pivot_index] arr[pivot_index], arr[high] = arr[high], arr[pivot_index] i = low - 1 for j in range(low, high): if arr[j] <= pivot: i += 1 arr[i], arr[j] = arr[j], arr[i] arr[i+1], arr[high] = arr[high], arr[i+1] return i+1 def quick_select(arr, low, high, k): if low == high: return arr[low] pivot_index = partition(arr, low, high) if k == pivot_index: return arr[k] elif k < pivot_index: return quick_select(arr, low, pivot_index-1, k) else: return quick_select(arr, pivot_index+1, high, k) def kth_smallest(arr, k): return quick_select(arr, 0, len(arr)-1, k-1) ``` 使用方法如下: ```python arr = [5, 3, 9, 2, 1, 7] print(third_smallest(arr)) # 输出 3 print(kth_smallest(arr, 3)) # 输出 3 ``` ### 回答2: 可以使用Python语言编写一个,该函接受一个整数列表作为参,返回列表中第三小的。以下是一个可能的解决方案: ```python def find_third_smallest(numbers): # 去除列表中的重复元素 unique_numbers = list(set(numbers)) # 如果列表中的不同元素量小于3,则返回错误提示 if len(unique_numbers) < 3: return "列表中的元素量不足,无法求得第三小的" # 根据元素值进行排序 sorted_list = sorted(unique_numbers) # 返回第三小的 return sorted_list[2] ``` 使用该函可以很方便地求得列表中第三小的,示例如下: ```python numbers = [9, 2, 3, 6, 4, 7, 1, 5, 8] third_smallest = find_third_smallest(numbers) print("第三小的是:", third_smallest) ``` 输出结果为: ``` 第三小的是: 3 ``` ### 回答3: 要找到一个列表中第三小的,可以使用Python的内置函sorted()来将列表按升序排序,然后找到排序后的第三个即可。 以下是一个示例代码: ```python def find_third_smallest(nums): sorted_nums = sorted(nums) # 对列表进行排序 return sorted_nums[2] # 返回第三个 numbers = [9, 5, 1, 3, 7, 2, 8] result = find_third_smallest(numbers) print("第三小的是:", result) ``` 输出结果为: ``` 第三小的是: 3 ``` 这个代码首先定义一个`find_third_smallest`,它接受一个字列表作为参。在函内部,使用`sorted`函对列表进行排序,并将结果存储在`sorted_nums`变量中。然后,返回`sorted_nums`列表中索引为2的元素,即第三小的。最后,在主程序中定义一个字列表`numbers`,并调用`find_third_smallest`函找到第三小的,结果为3。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值