剑指 offer 30天打卡 (持续更新)day16

Day 16 胜利属于达瓦里氏!

题目1 剑指 Offer 45. 把数组排成最小的数
题目2 剑指 Offer 61. 扑克牌中的顺子

1. 剑指 Offer 45. 把数组排成最小的数

思路: 本质上是一种排序方法的再构造 注意怎样来定义这个排序的规则 同时了解排序规则的证明 离散数学中的反对称性 和 传递性

class Solution {
public:

    static bool cmp(int a , int b){
        auto sa = to_string(a), sb = to_string(b);
        return sa + sb <  sb + sa;
    }

    string minNumber(vector<int>& nums) {
        string res = "";
        sort(nums.begin(), nums.end(), cmp);
        for(auto x : nums){
            res += to_string(x);
        }
        return res;
    }
};

2.剑指 Offer 61. 扑克牌中的顺子

思路 :核心的想法 保证除去大小王的为0的扑克 数组是有序的并且无重复 同时还要考虑到一个点 最大值减去最小值的差值必须小于5 这样才能满足条件

class Solution {
public:
    bool isStraight(vector<int>& nums) {
      set<int> st;
      int _min = 14;
      int _max = 0;
      for(auto x : nums){
          if(x == 0) continue; 
          _max = max(_max, x);
          _min = min(_min, x);
          if(st.contains(x)) return false;
          st.insert(x);
      } 
      return _max - _min < 5; 
    } 
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值