当前位置: 首页 > news >正文

网站规划图/线上营销工具

网站规划图,线上营销工具,blog制作网站,网站的开发和建设毕业论文点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!————— 第二天 —————算法题目:给定一个正整数,实现一个方法来求出离该整数最近的大于自身的“换位数”。什么是换位数呢?就是把一…

点击上方“程序员小灰”,选择“置顶公众号”

有趣有内涵的文章第一时间送达!

8c9e9981c2f358e6f92c6f82f5cb78af.png

b0f563889d3c51534e9d6bc280617074.png

—————  第二天  —————

77bfd48e60e2fef2276fa0177474be42.png

ac70ac137301d91bc0d022ebd2aed939.png

5557107a409eff8e092898e88fb73a63.png

算法题目:

给定一个正整数,实现一个方法来求出离该整数最近的大于自身的“换位数”。

什么是换位数呢?就是把一个整数各个数位的数字进行全排列,从而得到新的整数。例如53241和23541。

小灰也不知道这种经过换位的整数应该如何称呼,所以姑且称其为“换位数”。

题目要求写一个方法来寻找最近的且大于自身的换位数。比如下面这样:

输入12345,返回12354

输入12354,返回12435

输入12435,返回12453

2124a727b08435a1f8df931d635e5e19.png

f7c6ed5eb82aa98424a5539e7adbff52.png

小灰发现的“规律”:

输入12345,返回12354

12354 - 12345 = 9

刚好相差9的一次方

输入12354,返回12435

12435 - 12354 = 81

刚好相差9的二次方

所以,每次计算最近的换位数,只需要加上9的N次方即可?

00414088dd6c8f2da9c34f7ef81320f3.png

d34b65305696bdf133c899a7156eff8f.png

7b27a84d3753d9992329da2b02a40e90.png

87634af7c4bac64a5096a81843a4c976.png

————————————

215b0ed7473fcdc53445da31d28e3cfe.png

900458f048b7338d4711c1e09fc5b452.png

b4a258635729158fbb7492dbfdfc79d9.png

f0ea3544231a5c8149fc6a109d3de8e4.png

51fda1ca0ea0bbb243a4f4f1059f4788.png

c97b652e230b003b7bf70c301d81257b.png

举一个栗子:

给定1,2,3,4,5这几个数字。

最大的组合:54321

最小的组合:12345

d82a0795f5cf6264a5dd70fc97198d53.png

比如给定整数12354,如何找到离它最近且大于它的换位数呢?

为了和原数接近,我们需要尽量保持高位不变,低位在最小的范围内变换顺序。

那么,究竟需要变换多少位呢?这取决于当前整数的逆序区域。

3d92a41ec4729a51fd9aab558bd39973.png

如果所示,12354的逆序区域是最后两位,仅看这两位已经是当前的最大组合。若想最接近原数,又比原数更大,必须从倒数第3位开始改变。

怎样改变呢?12345的倒数第3位是3,我们需要从后面的逆序区域中寻找到刚刚大于3的数字,和3的位置进行互换:

917b8b332984a100fa825abd6872831b.png

互换后的临时结果是12453,倒数第3位已经确定,这时候最后两位仍然是逆序状态。我们需要把最后两位转变回顺序,以此保证在倒数第3位数值为4的情况下,后两位尽可能小:

2d5f7b0a4bd8941d03bf2adcb6b384ff.png

这样一来,我们就得到了想要的结果12435。

4a6fd471b83489bddb3c02e04e16f6df.png

76b4b56267c3b85f7cb09b107befcb64.png

获得最近换位数的三个步骤:

1.从后向前查看逆序区域,找到逆序区域的前一位,也就是数字置换的边界

2.把逆序区域的前一位和逆序区域中刚刚大于它的数字交换位置

3.把原来的逆序区域转为顺序

c74beecfb8517ac2113d31459699412f.png

//主流程,返回最近一个大于自身的相同数字组成的整数。

publicstaticint[] findNearestNumber(int[] numbers){

//拷贝入参,避免直接修改入参

int[] numbersCopy =Arrays.copyOf(numbers, numbers.length);

//1.从后向前查看逆序区域,找到逆序区域的前一位,也就是数字置换的边界

intindex = findTransferPoint(numbersCopy);

//如果数字置换边界是0,说明整个数组已经逆序,无法得到更大的相同数字组成的整数,返回自身

if(index ==0){

returnnull;

}

//2.把逆序区域的前一位和逆序区域中刚刚大于它的数字交换位置

exchangeHead(numbersCopy, index);

//3.把原来的逆序区域转为顺序

reverse(numbersCopy, index);

returnnumbersCopy;

}

privatestaticintfindTransferPoint(int[] numbers){

for(inti=numbers.length-1; i>0; i--){

if(numbers[i] > numbers[i-1]){

returni;

}

}

return0;

}

privatestaticint[] exchangeHead(int[] numbers,intindex){

inthead = numbers[index-1];

for(inti=numbers.length-1; i>0; i--){

if(head < numbers[i]){

numbers[index-1] =  numbers[i];

numbers[i] = head;

break;

}

}

returnnumbers;

}

privatestaticint[] reverse(int[] num,intindex){

for(inti=index,j=num.length-1; i

inttemp = num[i];

num[i] = num[j];

num[j] = temp;

}

returnnum;

}

publicstaticvoidmain(String[] args) {

int[] numbers = {1,2,3,4,5};

for(inti=0; i<10;i++){

numbers = findNearestNumber(numbers);

outputNumbers(numbers);

}

}

//输出数组

privatestaticvoidoutputNumbers(int[] numbers){

for(inti : numbers){

System.out.print(i);

}

System.out.println();

}

这种解法拥有一个高大上的名字:字典序算法。

75c659c90f6c8bb8519d93ee599e1625.png

7e554b4e3b01c4e9fdcbf0d805d22908.png

2c00c3cafc98413c9c9491263b74d299.png

几点补充:

本漫画纯属娱乐,还请大家尽量珍惜当下的工作,切勿模仿小灰的行为哦。

—————END—————

242cbe601500e96c94f8e4c4d3c01c95.png

喜欢本文的朋友们,欢迎长按下图关注订阅号程序员小灰,收看更多精彩内容

http://www.lbrq.cn/news/1062649.html

相关文章:

  • b2c网络购物系统/seo推广任务小结
  • 深圳定制网站制作厂家/网络推广服务合同范本
  • 怎么做网站推广知乎/百度企业查询
  • 青岛网站优化公司/百度认证中心
  • 一个好的网站怎样布局/域名申请的流程
  • 网站建设 分类/哈尔滨seo和网络推广
  • 单位网站建设/品牌策划案
  • 建设部网站备案/北京百度竞价
  • 石家庄网络营销哪家好做/深圳最好的外贸seo培训
  • 网站建设需要哪些基础/自助建站系统个人网站
  • 网页界面设计ppt/汕头seo推广
  • 外包公司做网站有哪些内容/搜索广告优化
  • 网站制作企业/5g网络优化
  • 网站手机版跳转代码/网站网络推广优化
  • 做网站建设的注意事项/短视频营销常用平台有
  • 银川 网站建设/口碑营销理论
  • 昆明睿腾科技网站建设/直通车推广技巧
  • WordPress网站转HTPPS/搜索关键词查询
  • 解放碑电子商务网站建设/如何做好营销
  • 绍兴中交水利水电建设有限公司网站/成人再就业技能培训班
  • 如何做授权网站/产品怎么在网上推广
  • 做网站策划薪酬/百度一下百度搜索百度一下
  • 吴桥做网站价格/免费下载百度
  • 做一个购物平台需要多少钱/湖南有实力seo优化
  • 建设网站外国人可搜到/深圳企业黄页网
  • 做外国网站怎么买空间/网络营销题库案例题
  • 给网站首页图片做外网超链接_为什么会弹出一个服务器登录窗口/青岛seo排名公司
  • 电影网站建设之苹果cms程序/微信朋友圈推广软文
  • 三门峡住房和建设局网站/惠州seo优化
  • 做网站几天/企业员工培训总结
  • 微服务—Gateway
  • Spring之【详解FactoryBean】
  • Java技术栈/面试题合集(4)-Spring篇
  • 【Spring】SpringBoot 自动配置,@ComponentScan、@Import、ImportSelector接口
  • Java基础-斗地主游戏
  • sqli-labs:Less-23关卡详细解析