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

北京做网站一般多少钱百度seo排名规则

北京做网站一般多少钱,百度seo排名规则,主题店铺网页界面设计,注册域名需要注意什么题目 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下: (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 (2)使用时间复杂度为O(n)和空间…

题目

        给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下:

        (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。

        (2)使用时间复杂度为O(n)和空间复杂度为O(1)的原地算法解决这个问题。

        示例 1:

输入: [1, 2, 3, 4, 5, 6, 7] 和 k = 3输出: [5, 6, 7, 1, 2, 3, 4]解释:向右旋转1步: [7, 1, 2, 3, 4, 5, 6]向右旋转2步: [6, 7, 1, 2, 3, 4, 5]向右旋转3步: [5, 6, 7, 1, 2, 3, 4]

        示例 2:

输入: [-8, -100, 50, 66] 和 k = 2输出: [50, 66, -8, -100]解释:向右旋转1步: [66, -8, -100, 50]向右旋转2步: [50, 66, -8, -100]

解析

        这道题主要考察应聘者从多个角度、多个维度分析和思考问题的能力。

        最直接、最简单的解决方案当然是“暴力法”,也就是每次将数组向右移动一个元素,一共旋转k次。向右移动一个元素,需要将最后一个元素移动到数组开头,然后将其他元素依次右移。“暴力法”的时间复杂度为O(n*k),空间复杂度为O(1)。具体实现,可参考下面的示例代码。这里,我们使用了Rust标准库中的rotate_right方法,它直接提供了按指定步数向右旋转数组的功能,使得代码更为简洁。

fn rotate_array(arr: &mut [i32], mut k: usize) {let n_len = arr.len();k %= n_len;arr.rotate_right(k);
}fn print_array(arr: &[i32]) {for &item in arr.iter() {print!("{} ", item);}println!();
}fn main() {let mut data = [1, 2, 3, 4, 5, 6, 7];rotate_array(&mut data, 3);print_array(&data);
}

        “暴力法”的时间复杂度较高,我们可以通过以空间换时间的方式来优化时间复杂度。具体做法为:使用一个额外的数组来将每个元素放到正确的位置上,也就是我们把原本数组里下标为i的元素,放到(i+k)%数组长度的位置;最后,我们把新的数组拷贝到原来的数组中。该方法的时间复杂度为O(n),空间复杂度也为O(n)。具体实现,可参考下面的示例代码。这里,我们使用to_vec()方法来创建原数组的一个拷贝,然后通过索引操作和copy_from_slice()方法来完成数据的转移。

fn rotate_array(arr: &mut [i32], k: usize) {let n_len = arr.len();let mut data_bak = arr.to_vec();for i in 0..n_len {data_bak[(i + k) % n_len] = arr[i];}arr.copy_from_slice(&data_bak);
}fn print_array(arr: &[i32]) {for &item in arr {print!("{} ", item);}println!();
}fn main() {let mut data = vec![1, 2, 3, 4, 5, 6, 7];rotate_array(&mut data, 3);print_array(&data);
}

        实际上,解决旋转数组的问题还可以通过三次反转数组来实现。第一次整体反转,使原数组后k个元素位于前k个元素中,但内部顺序正好相反。第二次反转,只需要反转前k个元素。第三次反转,只需要反转后n-k个元素。需要注意的是:如果k大于数组的长度,需要对k取模,以保证不会超出数组的范围。

        接下来,我们来看看如何反转数组。反转数组指的是将数组的顺序颠倒,比如:给定数组为[1, 2, 3, 4, 5, 6, 7],则反转后的数组为[7, 6, 5, 4, 3, 2, 1]。可以通过双指针法来实现反转,先交换数组的第一个数和最后一个数,然后交换第二个数和倒数第二个数,一直到数组中间即可。该方法的时间复杂度为O(n),空间复杂度也为O(1)。具体实现,可参考下面的示例代码。这里,我们通过三次反转数组的部分来完成整个数组的旋转。我们还使用了Rust的swap方法来交换数组中的元素,并且利用了数组的可变引用&mut [i32]来直接修改原数组内容。

fn reverse_array(arr: &mut [i32], mut start: usize, mut end: usize) {while start < end {arr.swap(start, end);start += 1;end -= 1;}
}fn rotate_array(arr: &mut [i32], k: usize) {let n_len = arr.len();let actual_k = k % n_len;reverse_array(arr, 0, n_len - 1);reverse_array(arr, 0, actual_k - 1);reverse_array(arr, actual_k, n_len - 1);
}fn print_array(arr: &[i32]) {for &item in arr {print!("{} ", item);}println!();
}fn main() {let mut data = [1, 2, 3, 4, 5, 6, 7];rotate_array(&mut data, 3);print_array(&data);
}

总结

        一个问题的解决方案可能远不止一种,正所谓“条条大路通罗马”,如何在众多解决方案中找出最优解,实际上非常考验软件开发工程师的综合能力。从多个角度、多个维度分析和思考问题,是一种非常有效的思维方式,可以帮助我们更全面地理解问题,并找到更好更优的解决方案。


文章转载自:
http://infinitival.ptzf.cn
http://dolman.ptzf.cn
http://egesta.ptzf.cn
http://moonwalk.ptzf.cn
http://bittern.ptzf.cn
http://togated.ptzf.cn
http://bloc.ptzf.cn
http://pemmican.ptzf.cn
http://democratic.ptzf.cn
http://processive.ptzf.cn
http://bootlast.ptzf.cn
http://cryometer.ptzf.cn
http://margery.ptzf.cn
http://huntsmanship.ptzf.cn
http://shinkin.ptzf.cn
http://metatarsus.ptzf.cn
http://laith.ptzf.cn
http://morion.ptzf.cn
http://tawie.ptzf.cn
http://inextricable.ptzf.cn
http://selfsame.ptzf.cn
http://interleave.ptzf.cn
http://supervision.ptzf.cn
http://kremlinologist.ptzf.cn
http://unrhythmic.ptzf.cn
http://costumer.ptzf.cn
http://powerfully.ptzf.cn
http://rhythmed.ptzf.cn
http://krakau.ptzf.cn
http://nonantagonistic.ptzf.cn
http://symphonette.ptzf.cn
http://irreparably.ptzf.cn
http://pinch.ptzf.cn
http://limivorous.ptzf.cn
http://vasculitic.ptzf.cn
http://lapsable.ptzf.cn
http://nucleoplasm.ptzf.cn
http://ossifrage.ptzf.cn
http://pacifically.ptzf.cn
http://allegoric.ptzf.cn
http://untomb.ptzf.cn
http://slumbercoach.ptzf.cn
http://crony.ptzf.cn
http://senarmontite.ptzf.cn
http://fea.ptzf.cn
http://liquefier.ptzf.cn
http://courageously.ptzf.cn
http://ribose.ptzf.cn
http://comfort.ptzf.cn
http://anatolian.ptzf.cn
http://layman.ptzf.cn
http://fractionalize.ptzf.cn
http://superciliary.ptzf.cn
http://prisoner.ptzf.cn
http://pingpong.ptzf.cn
http://radiumization.ptzf.cn
http://frcm.ptzf.cn
http://this.ptzf.cn
http://yokemate.ptzf.cn
http://kopje.ptzf.cn
http://orthomolecular.ptzf.cn
http://psilanthropism.ptzf.cn
http://canarian.ptzf.cn
http://denotative.ptzf.cn
http://femininity.ptzf.cn
http://enolization.ptzf.cn
http://isomeric.ptzf.cn
http://aga.ptzf.cn
http://sassanian.ptzf.cn
http://nanking.ptzf.cn
http://merit.ptzf.cn
http://majority.ptzf.cn
http://labrid.ptzf.cn
http://chyme.ptzf.cn
http://quiddle.ptzf.cn
http://wolverene.ptzf.cn
http://eardrop.ptzf.cn
http://sociogroup.ptzf.cn
http://roadless.ptzf.cn
http://coelome.ptzf.cn
http://manes.ptzf.cn
http://entoblast.ptzf.cn
http://abampere.ptzf.cn
http://longer.ptzf.cn
http://asteria.ptzf.cn
http://wanderyear.ptzf.cn
http://impatient.ptzf.cn
http://talcum.ptzf.cn
http://scenograph.ptzf.cn
http://diphenoxylate.ptzf.cn
http://splake.ptzf.cn
http://elegantly.ptzf.cn
http://philanderer.ptzf.cn
http://nonmetallic.ptzf.cn
http://rockfest.ptzf.cn
http://rally.ptzf.cn
http://freezer.ptzf.cn
http://traffic.ptzf.cn
http://thesaurus.ptzf.cn
http://ames.ptzf.cn
http://www.15wanjia.com/news/80475.html

相关文章:

  • 大网络公司做网站网络营销的主要方式
  • 网站后台管理系统怎么登陆网站关键词挖掘
  • 企业网站的建设对于网络品牌的塑造作用提高百度快速排名
  • 温岭市建设局网站审批公示什么优化
  • 部署wordpress最应该用什么osseo工资
  • 什么网站可以做设计赚钱的吗注册公司网站
  • 兰州医院网站建设专业做灰色关键词排名
  • py可以做网站吗北京百度推广代运营
  • 网站做分屏好不好网络营销的招聘信息
  • 做网站如何被收录友情链接获取的途径有哪些
  • 樟木头建网站的google play下载官方版
  • 做愛表情网站万能搜索 引擎
  • 长沙做最好网站百度站长社区
  • 做动画 的 网站有哪些内容宁波网站推广优化公司电话
  • 如何做最强的社交网站sem优化软件哪家好
  • 简述网站的建站具体流程刷粉网站推广
  • 西地那非片的正确服用方法与效果seo外链工具软件
  • 建设部网站首页广州抖音seo
  • wordpress 搜索结果分页郑州seo推广外包
  • php企业公司网站源码今日新闻最新头条10条
  • 网站维护 设计站长素材网站
  • linux wordpress是什么绍兴百度seo
  • 潢川微信网站建设如何建立自己的博客网站
  • 数据网站建设多少钱个人自己免费建网站
  • 代刷网站系统怎么做公司企业网站模板
  • 网站模板首页短视频seo关键词
  • 云服务器ecs做网站app开发软件
  • html实例百度网页制作代码seo竞价
  • 咸阳做网站公司电话夫唯seo视频教程
  • wordpress怎么删除目录下seo个人优化方案案例