假设我们有一个正的32位整数n,我们需要找到最小的32位整数,该整数与整数n中存在的数字完全相同,并且值大于n。如果我们没有这样的正32位整数,则返回-1。
因此,如果数字为213,则结果将为231。
为了解决这个问题,我们将遵循以下步骤-
s:= n作为字符串,sz:= s的大小,确定:= false
当我在sz范围内– 2到0
如果s [i] <s [i + 1],则ok:= true并中断循环
如果of为假,则返回– 1
最小:= i,curr:= i + 1
对于范围i + 1至sz – 1中的j
id s [j]> s [smallest]和s [j] <= s [curr],然后curr:= j
与s [curr]交换s [smallest]
aux:= s的子串,从索引0到最小
反向辅助
ret:= s的子串,从索引0到最小+ aux
如果ret> 32位+ ve整数范围,则返回-1,否则ret
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; class Solution { public: int nextGreaterElement(int n) { string s = to_string(n); int sz = s.size(); int i; bool ok = false; for(i = sz - 2; i >= 0; i--){ if(s[i] < s[i + 1]) { ok = true; break; } } if(!ok) return -1; int smallest = i; int curr = i + 1; for(int j = i + 1; j < sz; j++){ if(s[j] > s[smallest] && s[j] <= s[curr]){ curr = j; } } swap(s[smallest], s[curr]); string aux = s.substr(smallest + 1); reverse(aux.begin(), aux.end()); string ret = s.substr(0, smallest + 1) + aux; return stol(ret) > INT_MAX ? -1 : stol(ret); } }; main(){ Solution ob; cout << (ob.nextGreaterElement(213)); }
213
输出结果
231
我有一个循环,不断从我的串行端口读取。循环是无限的,所以我所知道的停止程序的唯一方法是使用。这个解决方案的问题是,当我使用时,我的程序会突然结束,我怀疑这也会导致其他问题。在程序结束时,我关闭了与我正在访问的串行端口的文件描述符的连接,但是我认为我的程序从来没有达到这个连接,因为我使用了命令,它只是在正确的位置停止程序它是。 有没有一种方法可以让我创建无限的time循环,并在我想要的时候退出,但同
想问一下一个C语言的位运算小问题. 有没有一个简单的表达式的写法,可以得到一个32位无符号数,只保留其最左侧或者最右侧的1的结果? 比如35=(000..0100011),得到32或者1? 用循环写的话不难,但,用一个简洁的表达式能写出来吗?
本文向大家介绍说一下C++和C的区别 ?相关面试题,主要包含被问及说一下C++和C的区别 ?时的应答技巧和注意事项,需要的朋友参考一下 设计思想上: C++是面向对象的语言,而C是面向过程的结构化编程语言 语法上: C++具有封装、继承和多态三种特性 C++相比C,增加多许多类型安全的功能,比如强制类型转换、 C++支持范式编程,比如模板类、函数模板等
本文向大家介绍请说一下C/C++ 中指针和引用的区别?相关面试题,主要包含被问及请说一下C/C++ 中指针和引用的区别?时的应答技巧和注意事项,需要的朋友参考一下 1.指针有自己的一块空间,而引用只是一个别名; 2.使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小; 3.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象 的引用; 4.作为参数传递时,指针需要被解引
问题内容: 我需要使用JavaScript根据下拉菜单A中的选择更改下拉菜单B的内容。没有涉及到数据库查询- 我事先知道应该在A中选择B的内容。我已经找到了一些使用AJAX的示例,但是由于没有涉及到数据库查询,所以没有必要。谁能为我指出一些示例代码以实现此目的? 问题答案: function configureDropDownLists(ddl1, ddl2) {
问题内容: 说我有 ID的* 记录 * 我希望能够通过下一个/上一个链接导航到另一个。 问题是,我不知道 如何获取具有最近的较高ID的记录 。 因此,当我有一个 ID为ID 的记录时,我需要能够提取下一个现有记录,即为。 该查询可能看起来像 如何获取下一个/上一个记录而不获取整个结果集并手动迭代? 我正在使用MySQL 5。 问题答案: 下一个: 以前的: