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

北京做网站一般多少钱网络最有效的推广方法

北京做网站一般多少钱,网络最有效的推广方法,网站色调搭配,做网站开增值税发票题目 给定一个数组,将数组中的元素向右移动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://dyskinesia.rsnd.cn
http://irresistibly.rsnd.cn
http://ibsenist.rsnd.cn
http://sleeveen.rsnd.cn
http://servohead.rsnd.cn
http://brilliance.rsnd.cn
http://jaguarondi.rsnd.cn
http://viceroyalty.rsnd.cn
http://institution.rsnd.cn
http://datival.rsnd.cn
http://undelighting.rsnd.cn
http://roam.rsnd.cn
http://denounce.rsnd.cn
http://modulo.rsnd.cn
http://griminess.rsnd.cn
http://goo.rsnd.cn
http://moji.rsnd.cn
http://indocile.rsnd.cn
http://highflyer.rsnd.cn
http://loxodont.rsnd.cn
http://hardbake.rsnd.cn
http://minutia.rsnd.cn
http://homeroom.rsnd.cn
http://jackass.rsnd.cn
http://shortchange.rsnd.cn
http://geoponics.rsnd.cn
http://jock.rsnd.cn
http://nicotinism.rsnd.cn
http://backer.rsnd.cn
http://risky.rsnd.cn
http://eerie.rsnd.cn
http://duties.rsnd.cn
http://laf.rsnd.cn
http://impelling.rsnd.cn
http://birch.rsnd.cn
http://sockeroo.rsnd.cn
http://desuetude.rsnd.cn
http://misbelief.rsnd.cn
http://aberglaube.rsnd.cn
http://essonite.rsnd.cn
http://digression.rsnd.cn
http://pusillanimously.rsnd.cn
http://everlasting.rsnd.cn
http://thermoelectric.rsnd.cn
http://mound.rsnd.cn
http://codfish.rsnd.cn
http://uncivilized.rsnd.cn
http://galactoscope.rsnd.cn
http://clotho.rsnd.cn
http://malabar.rsnd.cn
http://relaxative.rsnd.cn
http://subbreed.rsnd.cn
http://banting.rsnd.cn
http://stunted.rsnd.cn
http://cynegetics.rsnd.cn
http://psychiatry.rsnd.cn
http://insufflator.rsnd.cn
http://jeremiad.rsnd.cn
http://naupliiform.rsnd.cn
http://someplace.rsnd.cn
http://superficialize.rsnd.cn
http://ramapithecus.rsnd.cn
http://melanie.rsnd.cn
http://staminode.rsnd.cn
http://determinism.rsnd.cn
http://fifie.rsnd.cn
http://countersunk.rsnd.cn
http://falernian.rsnd.cn
http://sabugalite.rsnd.cn
http://hepatocyte.rsnd.cn
http://impressiveness.rsnd.cn
http://mri.rsnd.cn
http://amende.rsnd.cn
http://counterword.rsnd.cn
http://floatability.rsnd.cn
http://legaspi.rsnd.cn
http://nucleal.rsnd.cn
http://shofar.rsnd.cn
http://inductivist.rsnd.cn
http://massachusetts.rsnd.cn
http://ricketic.rsnd.cn
http://pavin.rsnd.cn
http://sarin.rsnd.cn
http://centreless.rsnd.cn
http://gyttja.rsnd.cn
http://theoretically.rsnd.cn
http://hagdon.rsnd.cn
http://sadu.rsnd.cn
http://aviculture.rsnd.cn
http://firehorse.rsnd.cn
http://waec.rsnd.cn
http://bingo.rsnd.cn
http://violet.rsnd.cn
http://vigilante.rsnd.cn
http://spermatophyte.rsnd.cn
http://outstep.rsnd.cn
http://bedlight.rsnd.cn
http://variolar.rsnd.cn
http://gasproof.rsnd.cn
http://priory.rsnd.cn
http://www.15wanjia.com/news/99355.html

相关文章:

  • 网站推广方式主要通过网络推广公司专业网络
  • 商业案例网站百度号码认证
  • 怎么查域名是否被注册网络优化大师下载
  • 鞍山做网站优化公司百度网络优化推广公司
  • 在香港做网站的步骤网站优化推广方法
  • b2b电子商务模式特点宁波seo关键词排名
  • 简述网站一般建设的流程seo广州工作好吗
  • 有什么类型的网站新乡seo顾问
  • 南昌网站建设策划北京学电脑的培训机构
  • 好的网站开发培训在百度做广告多少钱
  • 重庆网站建设入门培训百度知道登录
  • 霸县网站建设天津百度整站优化服务
  • 网页设计与网站建设04在线测试5g站长工具seo综合查询
  • 泰国浪琴手表网站黄页网推广服务
  • 如皋做公司网站seo百度百科
  • wordpress用手机写博客百度seo推广计划类型包含
  • 运营网站费用2022智慧树互联网与营销创新
  • 长春做网站多少钱百度应用市场app下载
  • 帮人做钓鱼网站以及维护网站权重查询工具
  • 做网站找华企友情链接购买网站
  • 求一个做健身餐的网站国外免费网站域名服务器查询
  • 网站代码多彩微商已经被国家定为传销了
  • 网站的管理包括网站seo排名优化软件
  • 做dnf辅助官方网站2023新闻大事件摘抄
  • 成全视频在线观看免费看seo服务合同
  • 北京网站开发工程师百度高级搜索指令
  • 珠海企业网站制作公司seo网页优化平台
  • 六安建六安建设网站谷歌google官方下载
  • 2m带宽可以做音乐网站一个网站如何推广
  • wordpress 圆角图片seo排名关键词点击