当前位置: 首页 > 编程笔记 >

C ++中给定数字最多的时间

黄彬
2023-03-14
本文向大家介绍C ++中给定数字最多的时间,包括了C ++中给定数字最多的时间的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个由4位数字组成的数组,那么我们必须找到最大的24小时制时间。我们知道最小的24小时时间是00:00,最大的时间是23:59。从00:00开始,如果自午夜起经过了更多时间,则时间会更大。我们必须以长度为5的字符串形式返回答案。如果没有有效的时间要返回,则返回一个空字符串。

因此,如果输入类似于[1,2,3,4],则输出将为“ 23:41”

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数isValid(),它将使用字符串a,

  • 如果a [0]>'2',则-

    • 返回假

  • 如果a [0]与'2'相同且a [1]>'3',则-

    • 返回假

  • 如果a [3]>'5',则-

    • 返回假

  • 返回真

  • 定义一个函数dfs(),它将采用数组A,res,cur,

  • 如果cur的大小等于5,则-

    • RES:=当前

    • 如果isValid(cur)且cur> res,则-

    • 返回

  • 对于初始化i:= 0,当i <4时,更新(将i增加1),请执行-

    • tmp:= A [i]

    • cur:= cur + A [i] + ASCII的'0'

    • 如果cur的大小等于2,则-

    • A [i]:= -1

    • dfs(A,res,cur)

    • A [i]:= tmp

    • 从cur删除最后一个元素

    • 如果cur的大小等于2,则-

    • cur:= cur连接到':'

    • 从cur删除最后一个元素

    • 如果A [i]不等于-1,则-

    • 从主要方法中执行以下操作-

    • res:=空字符串,tmp:=空字符串

    • dfs(A,res,tmp)

    • 返回资源

    让我们看下面的实现以更好地理解-

    示例

    #include <bits/stdc++++.h>
    using namespace std;
    class Solution {
    public:
       void dfs(vector<int>& A, string& res, string& cur) {
          if (cur.size() == 5) {
             if (isValid(cur) && cur > res)
                res = cur;
                return;
             }
             for (int i = 0; i < 4; ++i) {
                if (A[i] != -1) {
                   int tmp = A[i];
                   cur += A[i] + '0';
                if (cur.size() == 2)
                   cur += ':';
                   A[i] = -1;
                   dfs(A, res, cur);
                   A[i] = tmp;
                   cur.pop_back();
                   if (cur.size() == 2)
                      cur.pop_back();
                }
             }
       }
       bool isValid(const string a) {
          if (a[0] > '2')
             return false;
             if (a[0] == '2' && a[1] > '3')
                return false;
             if (a[3] > '5')
                return false;
             return true;
       }
       string largestTimeFromDigits(vector<int>& A) {
          string res = "", tmp = "";
          dfs(A, res, tmp);
          return res;
       }
    };
    main(){
    Solution ob;
    vector<int> v = {1,2,3,4};
    cout << (ob.largestTimeFromDigits(v));
    }

    输入值

    {1,2,3,4}

    输出结果

    23:41
     类似资料:
    • 本文向大家介绍C ++中给定乘积的N个整数的最大GCD,包括了C ++中给定乘积的N个整数的最大GCD的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个整数N和P。P是N个未知整数的乘积。我们必须找到这些整数的最大可能GCD。假设N = 3,且P = 24,则不同的组将像{1,1,24},{1,2,12},{1,3,8},{1,4,6},{2 ,2,6},{2,3,4}。GCD为:1、1、1

    • 本文向大家介绍在C ++中执行给定操作后的最终字符串,包括了在C ++中执行给定操作后的最终字符串的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将解决以下问题。 给定仅包含字符a和b的字符串,我们的任务是从字符串中删除子字符串ab。并打印剩余的字符串。 在这里,这个想法很容易解决。每个只有a和b的字符串最后都会缩小为a或b。 让我们看看解决问题的步骤。 初始化字符串。 为a和b初始化两

    • 本文向大家介绍计算C ++中给定范围内的最小元素数,包括了计算C ++中给定范围内的最小元素数的使用技巧和注意事项,需要的朋友参考一下 我们得到了一个大小为N的整数数组。变量L和R定义了一个介于1和N之间的范围。目标是找到位于范围L和R中的最小元素数,使得L> = 1且R <= N. 我们将遍历位于范围L和R中的元素并找到最小的元素,以实现此目的。 同样,遍历范围L和R的元素,如果任何元素等于在步

    • 本文向大家介绍C ++中未知给定产品的最大GCD,包括了C ++中未知给定产品的最大GCD的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个整数N和P。P是N个未知整数的乘积。我们必须找到这些整数的GCD。可能有不同的整数组,它们将给出相同的结果。在这里,我们将生成GCD,它在所有可能的组中最大。假设N = 3,且P = 24,则不同的组将像{1,1,24},{1,2,12},{1,3,8}

    • 问题内容: 说我有一个清单。我想找到3个最接近的数字,例如6.5。然后返回的值将是。 在python中找到一个最接近的数字并不是那么棘手,可以使用 但是我试图不绕这个循环找到k个最接近的数字。有pythonic方法可以完成上述任务吗? 问题答案: 简短的答案 该 heapq.nsmallest() 函数将整齐,有效地做到这一点: 本质上是这样说的:“给我三个与 6.5 绝对差值最小的输入值”。 算

    • 正如你们在问题中看到的,我有这个问题。我的意思是,我真的看不出有什么问题,也许是一些愚蠢的事情,但我不能解决它。这是代码: