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

免费做视频网站中原区快速建站公司电话

免费做视频网站,中原区快速建站公司电话,智慧旅游平台建设方案,永辉企业微信app下载安装目录7 两数之和题目描述:解题思路与代码暴力解法:解法一:二分查找解法二:双指针2 斐波那契数列题目描述:解题思路与代码![请添加图片描述](https://img-blog.csdnimg.cn/d06a95d7989b4794bd7f5f02fbd6f87e.png)解法一&…

目录

  • 7 两数之和
    • 题目描述:
    • 解题思路与代码
      • 暴力解法:
      • 解法一:二分查找
      • 解法二:双指针
  • 2 斐波那契数列
    • 题目描述:
    • 解题思路与代码![请添加图片描述](https://img-blog.csdnimg.cn/d06a95d7989b4794bd7f5f02fbd6f87e.png)
      • 解法一:暴力递归
      • 解法二:去重递归
      • 解法三:双指针迭代

7 两数之和

题目描述:

给定一个升序排列的整数数组 numbers ,从数组中找出两个数满足相加之和等于目标数 target 。

假设每个输入只对应唯一的答案,而且不可以重复使用相同的元素。

返回两数的下标值,以数组形式返回

解题思路与代码

暴力解法:

    public int[] twoSum(int[] nums, int target) {int n = nums.length;for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {if (nums[i] + nums[j] == target) {return new int[]{i, j};}}}return new int[0];}

时间复杂度:O(N的平方)

空间复杂度:O(1)

哈希表:将数组的值作为key存入map,target - num作为key

    public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; ++i) {if (map.containsKey(target - nums[i])) {return new int[]{map.get(target - nums[i]), i};}map.put(nums[i], i);}return new int[0];}

时间复杂度:O(N)

空间复杂度:O(N)

解法一:二分查找

先固定一个值(从下标0开始),再用二分查找查另外一个值,找不到则固定值向右移动,继续二分查找

    public int[] twoSearch(int[] numbers, int target) {for (int i = 0; i < numbers.length; ++i) {int low = i, high = numbers.length - 1;while (low <= high) {int mid = (high - low) / 2 + low;if (numbers[mid] == target - numbers[i]) {return new int[]{i, mid};} else if (numbers[mid] > target - numbers[i]) {high = mid - 1;} else {low = mid + 1;}}}}

时间复杂度:O(N * logN)

空间复杂度:O(1)

解法二:双指针

左指针指向数组head,右指针指向数组tail,head+tail > target 则tail 左移,否则head右移

    public int[] twoPoint(int[] numbers, int target) {int low = 0, high = numbers.length - 1;while (low < high) {int sum = numbers[low] + numbers[high];if (sum == target) {return new int[]{low + 1, high + 1};} else if (sum < target) {++low;} else {--high;}}return new int[]{-1, -1};}

时间复杂度:O(N)

空间复杂度:O(1)

2 斐波那契数列

题目描述:

求取斐波那契数列第N位的值。

斐波那契数列:每一位的值等于他前两位数字之和。前两位固定

解题思路与代码请添加图片描述

解法一:暴力递归

    public static int calculate(int num){if(num == 0 ){return 0;}if(num == 1){return 1;}return calculate(num-1) + calculate(num-2);}

解法二:去重递归

递归得出具体数值之后、存储到一个集合(下标与数列下标一致),后面递归之前先到该集合查询一次,如果查到则无需递归、直接取值。查不到再进行递归计算
请添加图片描述

    public static int calculate2(int num){int[] arr = new int[num+1];return recurse(arr,num);}private static int recurse(int[] arr, int num) {if(num == 0 ){return 0;}if(num == 1){return 1;}if(arr[num] != 0){return arr[num];}arr[num] = recurse(arr,num-1) + recurse(arr,num-2);return arr[num];}

解法三:双指针迭代

基于去重递归优化,集合没有必要保存每一个下标值,只需保存前两位即可,向后遍历,得出N的值
请添加图片描述

 public static int iterate(int num){if(num == 0 ){return 0;}if(num == 1){return 1;}int low = 0,high = 1;for(int i=2; i<= num; i++){int sum = low + high;low = high;high = sum;}return high;}
http://www.yayakq.cn/news/886389/

相关文章:

  • 郑州运营网站搭建优化永久免费个人网站
  • 网站建设gzzctyi广东网站制作
  • 好看简单易做的网站西凤酒网站建设的基本情况
  • 多语言企业网站开发广州专业视频制作
  • 网站制作简介房产交易网
  • 郑州专门做喷绘安装的网站免费网站开发源代码
  • 企业网站主页设计郑州网站建设讠汉狮网络
  • 做企业网站什么软件好免费企业黄页查询网站
  • 上海网站建设培训学校做网站卖大闸蟹
  • 解析网站dns快站优惠券app
  • 网站设计 psd广东中南建设有限公司网站
  • 陕西建设厅继续教育网站怎么对自己的网页进行修改
  • 动易初级中学网站模板cms 6.8画廊网站模板 frontpage
  • 成都企业网站怎么做沈阳做网站的互联网公司
  • 东莞建设监督网站如何修改模板网站
  • 重庆技术网站建设上海网站快速排名
  • 南宁模板建站多少钱平台网站模板
  • 页面设计排版网站网站链接交换
  • 怎么制作有效网站泉州建站方案
  • 医学类的网站做Google个人网站介绍
  • 上海公司网站建设域名注册的网站
  • 免费企业网站制作在哪里可以免费观看最新电影
  • 优秀的html5网站设计理念万能模板
  • 如何自己做网站免费自助建站网站
  • 机械设备 东莞网站建设wordpress kvstore
  • 保定企业建网站广西做网站的公司有哪些
  • 鞋网站建设网站遭到攻击 运维怎么做
  • 山河集团建设有限公司网站小公司做网站需要注意什么
  • 泰安建设厅网站wordpress 菜单 文章列表
  • 今天发生的重大新闻内容搜索引擎关键词优化方案