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

政府网站建设经费预算方案seo网站关键词优化多少钱

政府网站建设经费预算方案,seo网站关键词优化多少钱,精美网站,2019做哪个网站赚钱LeetCode167_两数之和 Ⅱ - 输入有序数组 标签:#数组 #双指针 #二分查找Ⅰ. 题目Ⅱ. 示例 0. 个人方法官方题解一:二分查找官方题解二:双指针 标签:#数组 #双指针 #二分查找 Ⅰ. 题目 给你一个下标从 1 开始的整数数组 numbers …

LeetCode167_两数之和 Ⅱ - 输入有序数组

  • 标签:#数组 #双指针 #二分查找
    • Ⅰ. 题目
    • Ⅱ. 示例
  • 0. 个人方法
  • 官方题解一:二分查找
  • 官方题解二:双指针

标签:#数组 #双指针 #二分查找

Ⅰ. 题目

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1]numbers[index2] ,则 1 <= index1 < index2 <= numbers.length

以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1index2

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

你所设计的解决方案必须只使用常量级的额外空间。

Ⅱ. 示例

· 示例 1:
输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

· 示例 2:
输入:numbers = [2,3,4], target = 6
输出:[1,3]
解释:2 与 4 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。

· 示例 3:
输入:numbers = [-1,0], target = -1
输出:[1,2]
解释:-1 与 0 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

0. 个人方法

使用双指针进行从前往后和从后往前的查找。

class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {int length = numbers.size();int ans = 0;std::vector index(2, 1);for (int i=0; i<length; ++i){ans = numbers[i];for (int j=length-1; j>=0; j--){ans += numbers[j];if (ans == target){index[0] += i;index[1] += j;return index;}else{ans = numbers[i];}if (numbers[j] < target - numbers[i])break;}}return index;}
};

官方题解一:二分查找

在数组中找到两个数,使得它们的和等于目标值,可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数组的有序性质,可以通过二分查找的方法寻找第二个数。为了避免重复寻找,在寻找第二个数时,只在第一个数的右侧寻找。

class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {for (int i = 0; i < numbers.size(); ++i) {int low = i + 1, high = numbers.size() - 1;while (low <= high) {int mid = (high - low) / 2 + low;if (numbers[mid] == target - numbers[i]) {return {i + 1, mid + 1};} else if (numbers[mid] > target - numbers[i]) {high = mid - 1;} else {low = mid + 1;}}}return {-1, -1};}
};
  • 复杂度分析

    • 时间复杂度:O(nlogn),其中 n 是数组的长度。需要遍历数组一次确定第一个数,时间复杂度是 O(n),寻找第二个数使用二分查找,时间复杂度是 O(logn),因此总时间复杂度是 O(nlogn)。

    • 空间复杂度:O(1)。

官方题解二:双指针

class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {int low = 0, high = numbers.size() - 1;while (low < high) {int sum = numbers[low] + numbers[high];if (sum == target) {return {low + 1, high + 1};} else if (sum < target) {++low;} else {--high;}}return {-1, -1};}
};
  • 复杂度分析

    • 时间复杂度:O(n),其中 n 是数组的长度。两个指针移动的总次数最多为 n 次。

    • 空间复杂度:O(1)。

http://www.cadmedia.cn/news/9530.html

相关文章:

  • 简洁大方网站建设微信营销推广软件
  • 坪山网站建设渠道成功的营销案例及分析
  • 做微信公众号的网站吗百度指数功能模块有哪些
  • 学做美食视频网站重庆seo排
  • 网络公关公司电话网站seo优化方案设计
  • 如何做微信小程序开发seo关键字优化软件
  • 宝安住房和建设局网站电话百度seo点击器
  • 微网站自助建设如何做推广
  • 东莞浩智建设网站哪家比较好品牌推广工作内容
  • 网站制作泉州公司百度推广怎么开户
  • 建设银行忘记密码网站首页外贸网站推广seo
  • 免费企业建站百度搜索什么关键词排名
  • 简单的编程代码班级优化大师简介
  • 阿盟住房和城乡建设局门户网站怎样做网络推广
  • 淄博微网站建设重庆网站建设维护
  • 东莞网站建设推广seo推广专员工作好做吗
  • 网站建设氵金手指下拉国际新闻网
  • 宁波江北区网站推广联系方式b2b电子商务网
  • 杭州网站app开发公司泰安百度推广代理
  • 怎么做卡蜜网站seo投放营销
  • 电子杂志制作app百度seo排名
  • 网站建设的价钱百度关键词排名突然下降很多
  • 静态网页制作实训报告小时seo百度关键词点击器
  • 公司策划书模板广州seo营销培训
  • 网站怎么建设微信支付宝支付功能拼多多运营
  • 建立app上海专业的seo推广咨询电话
  • 养老网站建设合同2023免费b站推广大全
  • wordpress主题适应手机浏览器账号seo是什么
  • 网站建设系统哪家便宜些推广平台排行榜有哪些
  • 网站建设系统平台做网站用什么软件