日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

天池 在线编程 最佳利用率(二分查找 + 哈希)

發(fā)布時(shí)間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 天池 在线编程 最佳利用率(二分查找 + 哈希) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給兩個(gè)排序的數(shù)組。
從兩個(gè)數(shù)組中各取取一個(gè)數(shù),這兩個(gè)數(shù)之和需要小于或等于k, 需要找到兩數(shù)之和最大的索引組合。
返回一對(duì)包含兩個(gè)列表的索引。
如果有多個(gè)兩數(shù)之和相等的索引答案,你應(yīng)該選擇第一個(gè)數(shù)組索引最小的索引對(duì)。
在此前提下,你應(yīng)該選擇第二個(gè)數(shù)組索引最小的索引對(duì)。

1)兩數(shù)的總和<= k
2)總和是最大的
3)兩個(gè)數(shù)組索引都盡量最小

如果你無(wú)法找到答案,你應(yīng)返回一個(gè)空列表[]。
You can assume that the numbers in arrays are all positive integer or zero.

示例1 輸入: A = [1, 4, 6, 9], B = [1, 2, 3, 4], K = 9 輸出: [2, 2]示例2: 輸入: A = [1, 4, 6, 8], B = [1, 2, 3, 5], K = 12 輸出: [2, 3]

https://tianchi.aliyun.com/oj/338592228998370026/357527484118536803

2. 解題

  • 遍歷 B 的元素,記錄每個(gè)值第一次出現(xiàn)的位置
  • 遍歷 A,在 B 中查找小于等于 K-A[i] 的最大的數(shù)
  • 時(shí)間復(fù)雜度 O(n1log?n2)O(n_1\log n_2)O(n1?logn2?)
class Solution { public:/*** @param A: an integer sorted array* @param B: an integer sorted array* @param K: an integer* @return: return a pair of index*/vector<int> optimalUtilization(vector<int> &A, vector<int> &B, int K) {// write your code hereif(A.empty() || B.empty() || A[0]+B[0] > K) return {};unordered_map<int,int> m;for(int i = 0; i < B.size(); ++i)if(m.find(B[i]) == m.end())m[B[i]] = i;//每個(gè)數(shù)最早出現(xiàn)的位置int i = 0, j = B.size()-1, n1 = A.size(), n2 = B.size(), sum, maxsum=INT_MIN;vector<int> ans(2);for(int i = 0; i < n1; ++i){int t = K-A[i];int l = 0, r = n2-1, pos=-1;while(l <= r) // 二分查找{int mid = l+((r-l)>>1);if(B[mid] > t)r = mid-1;else{if(mid==n2-1 || B[mid+1] > t){pos = mid;break;}elsel = mid+1;}}if(pos != -1){sum = A[i]+B[pos];if(sum > maxsum){maxsum = sum;ans[0] = i;ans[1] = m[B[pos]];}}elsebreak;}return ans;} };

50ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!

總結(jié)

以上是生活随笔為你收集整理的天池 在线编程 最佳利用率(二分查找 + 哈希)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。