首页 > 其他分享 >剑指offer——Day16 排序(简单)

剑指offer——Day16 排序(简单)

时间:2022-11-26 22:35:47浏览次数:39  
标签:string nums int offer pos Day16 min 排序

Day16 2022.11.22 排序(简单)

45.把数组排成最小的数

自己实现

没有思路

题解

也是比较大小,只是这个比较大小的方法是两个数字字符串string xstring y,如果x+y<y+x,说明x应该在前面,这里暂且定义为x<y。然后正常比较大小,采用适当的排序方法即可

代码如下:

class Solution {
public:
	string minNumber(vector<int>& nums) {
		int min = 99999;
		int i, j;
		int pos;
		for (i = 0; i < nums.size() - 1; i++)
		{
			min = nums[i];
			pos = i;
			for (j = i + 1; j < nums.size(); j++)
			{
				if (to_string(min) + to_string(nums[j]) > to_string(nums[j]) + to_string(min))
				{
					min = nums[j];
					pos = j;
				}
			}
			int tmp = nums[i];
			nums[i] = nums[pos];
			nums[pos] = tmp;
		}
		string res = "";
		for (i = 0; i < nums.size(); i++)res += to_string(nums[i]);
		return res;
	}
};

代码表现

因为采用的是最简单的选择排序,所以时间很久

hint:

  • int和string的互相转化
    • int转成string: string str=to_string(i);
    • string转成int: int a=atoi(str.c_str())

61.扑克牌中的顺子

自己实现

一开始想的是直接排序,因为大小王是0所以会被直接放到数组最开始,然后再判断后面的相邻两个元素之间的差值是否能满足。但是感觉这个方法很难实现并且很慢,所以直接看题解了。

题解

满足两个条件即符合顺子:

  • 除了大小王(0)之外没有重复的牌
  • ***最大值-最小值<5

代码如下:

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        set<int> repeat;
        if(nums.size()!=5)return false;
        int i;
        int max=-1;
        int min=20;
        for(i=0;i<nums.size();i++)
        {
            if(nums[i]!=0 && repeat.count(nums[i])==1)return false;
            repeat.insert(nums[i]);
            if(nums[i]!=0)
            {
                if(nums[i]>max)max=nums[i];
                if(nums[i]<min)min=nums[i];   
            }
        }
        if(max-min<5)return true;
        return false;
    }
};

代码表现

hint:

  • 处理几个值是否连续且这几个值不重复的判断时,可以采用最大值-最小值来进行判断,即将值框定在某个范围内即可,这样的判断很牛
  • set容器的一些操作

标签:string,nums,int,offer,pos,Day16,min,排序
From: https://www.cnblogs.com/cspzyy/p/16928499.html

相关文章

  • 排序整合(1)
    冒泡排序基本思想第i(i=1,2,…)趟排序时从序列中前n-i+1个元素的第1个元素开始,相邻两个元素进行比较,若前者大于后者,两者交换位置,否则不交换。代码实现......
  • 基于桶的排序之计数排序
    基于桶的排序之计数排序作者:Grey原文地址:博客园:基于桶的排序之计数排序CSDN:基于桶的排序之计数排序说明基于桶的排序有两种,分别是计数排序和基数排序。但是这两种排......
  • java实现扑克牌游戏(洗牌,发牌,排序)
    packagepoker.bean;importlombok.AllArgsConstructor;importlombok.Getter;importlombok.NoArgsConstructor;importlombok.Setter;importjava.lang.annotatio......
  • 力扣153(java&python)-寻找旋转排序数组中的最小值(中等)
    题目:已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,......
  • sort自然排序顺序
    1、问题:fs读取文件夹文件的时候,有时顺序是乱的   而实际想要的顺序是这样的2、思路:主要通过js的数组中的sort方法来处理利用replace正则区分数字与非数字来遍历......
  • [拓扑排序 反向建图] 825E - Minimal Labels
    [拓扑排序编号字典序最小]825E-MinimalLabels题目​​题目链接​​思路这题答案要求节点编号越小,打上的标签越小,即编号序列字典序最小,而非拓扑序列字典序最小。想让当......
  • SQL语句查询关键字:where筛选、group by分组、distinc去重、order by排序、limit分页
    目录SQL语句查询关键字前期数据准备编写SQL语句的小技巧查询关键字之where筛选查询关键字之groupby分组查询关键字之having过滤查询关键字值distinct去重查询关键字值orde......
  • 麻了,三个offer不知道选哪个?
    果然鲁迅先生说的不错,人与人之间的悲欢并不相通有的小伙伴苦于没有面试,有的小伙伴却苦于offer太多不知道选择哪个?一、拿到的offer阿里:阿里云数据库方向,地址北京/杭州,年薪50......
  • js中对数字数组排序
    js中对数组数字排序(3条消息)js实现数字排序方法_soupJian前端养成记的博客-CSDN博客_js数字排序<scripttype="text/javascript">functionweek(){va......
  • LeetCode 912.排序数组
    题目描述:给你一个整数数组 nums,请你将该数组升序排列。示例1:输入:nums= [5,2,3,1]输出:[1,2,3,5]示例2:输入:nums= [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1. 1 <= nums......