LeetCode算法題(Go語言實現)_54

題目

給你兩個正整數數組 spells 和 potions ,長度分別為 n 和 m ,其中 spells[i] 表示第 i 個咒語的能量強度,potions[j] 表示第 j 瓶藥水的能量強度。
同時給你一個整數 success 。一個咒語和藥水的能量強度 相乘 如果 大于等于 success ,那么它們視為一對 成功 的組合。
請你返回一個長度為 n 的整數數組 pairs,其中 pairs[i] 是能跟第 i 個咒語成功組合的 藥水 數目。

一、代碼實現(Go語言實現)

import ("sort"
)func successfulPairs(spells []int, potions []int, success int64) []int {sort.Ints(potions)m := len(potions)res := make([]int, len(spells))for i, s := range spells {if s == 0 {res[i] = 0continue}s64 := int64(s)minPotion := (success + s64 - 1) / s64idx := sort.Search(m, func(j int) bool {return int64(potions[j]) >= minPotion})res[i] = m - idx}return res
}

二、算法分析

1. 核心思路
  • 排序與二分查找:通過將藥水數組排序,對每個咒語使用二分查找快速確定滿足條件的最小藥水位置。
  • 數學優化:利用整數運算避免浮點計算,準確計算每個咒語所需藥水的最小值。
2. 關鍵步驟
  1. 預處理藥水數組:對藥水數組進行排序以便后續二分查找。
  2. 遍歷咒語數組:對每個咒語計算所需藥水的最小值。
  3. 二分查找確定位置:使用二分查找確定第一個滿足條件的藥水位置,從而計算出滿足條件的藥水數量。
3. 復雜度
指標說明
時間復雜度O(m log m + n log m)排序藥水數組耗時 O(m log m),每個咒語二分查找耗時 O(log m)
空間復雜度O(m)存儲排序后的藥水數組

三、圖解示例

在這里插入圖片描述

四、邊界條件與擴展

1. 特殊場景驗證
  • 咒語強度極大:當咒語強度極大時,所需藥水值極小,可能全部滿足。
  • 藥水全不滿足:當藥水最大值仍小于最小需求時,結果為0。
  • 成功值為0:根據題意成功值始終為正,無需處理。
2. 擴展應用
  • 多維匹配:擴展到多維屬性匹配問題(如多條件組合)。
  • 動態藥水更新:支持動態添加/刪除藥水并實時查詢。
  • 分布式處理:大規模數據時采用分布式排序與查詢。
3. 多語言實現
import bisectdef successfulPairs(spells, potions, success):potions.sort()m = len(potions)return [m - bisect.bisect_left(potions, (success + s - 1) // s) for s in spells]
import java.util.Arrays;public class Solution {public int[] successfulPairs(int[] spells, int[] potions, long success) {Arrays.sort(potions);int[] res = new int[spells.length];for (int i = 0; i < spells.length; i++) {int s = spells[i];long minPotion = (success + s - 1) / s;int idx = Arrays.binarySearch(potions, (int) minPotion);if (idx < 0) idx = -idx - 1;res[i] = potions.length - idx;}return res;}
}

五、總結與優化

1. 算法對比
方法優勢適用場景
二分查找時間效率高靜態數據查詢
線性掃描無需預處理小規模數據
哈希預處理快速查詢頻繁重復查詢
2. 工程優化
  • 預處理緩存:對藥水數組預排序并緩存結果。
  • 并行處理:多線程處理不同咒語的查詢。
  • 內存優化:對排序后的藥水數組進行壓縮存儲。
3. 擴展方向
  • 動態閾值調整:支持動態變化的成功閾值。
  • 多條件組合:結合多個條件(如藥水類型、等級)進行匹配。
  • 實時反饋系統:集成到實時游戲系統中進行高效匹配計算。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77597.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內網穿透快解析免費開放硬件集成SDK

一、行業問題 隨著物聯網技術的發展&#xff0c;符合用戶需求的智能硬件設備被廣泛的應用到各個領域&#xff0c;而智能設備的遠程運維管理也是企業用戶遇到的問題 二、快解析內網穿透解決方案 快解析是一款內網穿透產品&#xff0c;可以實現內網資源在外網訪問&#xff0c;…

Python+Word實現周報自動化的完整流程

一、技術方案概述 自動化報表解決方案基于以下技術組件&#xff1a; Python 作為核心編程語言python-docx 庫用于處理 Word 文檔pandas 庫用于數據處理和分析matplotlib 或 plotly 庫用于數據可視化Word 模版作為報表的基礎格式 這種方案的優勢在于&#xff1a;保留了 Word 文…

elastic/go-elasticsearch與olivere/elastic

在 Go 語言中&#xff0c;與 Elasticsearch 交互的客戶端庫有多種選擇&#xff0c;其中 github.com/elastic/go-elasticsearch/v8 和 github.com/olivere/elastic/v7 是兩個常用的庫。這兩個庫的功能和用途有一些差異&#xff0c;以下是它們的詳細對比&#xff1a; 1. github.c…

deepseek + kimi制作PPT

目錄 一、kimi簡介二、deepseek生成內容三、生成PPT四、編輯PPT 一、kimi簡介 kimi是一款只能ppt生成器&#xff0c;擅長將文本內容生成PPT。 在這里&#xff0c;??DeepSeek 負責內容生成與邏輯梳理??&#xff0c;??Kimi 優化表達與提供設計建議??。 二、deepseek生…

【八大排序】冒泡、直接選擇、直接插入、希爾、堆、歸并、快速、計數排序

目錄 一、排序的介紹二、排序算法的實現2.1 直接插入排序2.2 希爾排序2.3 直接選擇排序2.4 堆排序2.5 冒泡排序2.6 快速排序2.7 歸并排序2.8 比較排序算法的性能展示2.9 計數排序 個人主頁<— 數據結構專欄<— 一、排序的介紹 我們的生活中有很多排序&#xff0c;比如像…

linux 查詢目錄文件大小

? 在 Linux 系統中&#xff0c;準確地掌握目錄和文件的大小對于磁盤空間管理至關重要。?本文將詳細介紹如何使用 du&#xff08;disk usage&#xff09;命令逐層查看目錄和文件的大小&#xff0c;并結合 sort 命令對結果進行排序&#xff0c;以便有效地識別和管理占用…

如何簡單幾步使用 FFmpeg 將任何音頻轉為 MP3?

在多媒體處理領域&#xff0c;FFmpeg 以其強大的功能和靈活性而聞名。無論是視頻編輯、音頻轉換還是流媒體處理&#xff0c;它都是專業人士和技術愛好者的首選工具之一。在這篇文章中簡鹿辦公將重點介紹如何使用 FFmpeg 進行音頻格式轉換&#xff0c;提供一些常用的轉換方式&am…

通信信號分類識別

通信信號分類識別 AlexNet網絡識別InceptionV3、ResNet-18、ResNet-50網絡識別 采用短時傅里葉變換將一維信號轉換為二維信號&#xff0c;然后采用經典神經網絡進行識別 支持識別BASK,BFSK,BPSK,QPSK,8PSK,QAM和MSK。 AlexNet網絡識別 在這里插入圖片描述 InceptionV3、Re…

TPshop項目-服務器環境部署(部署環境/服務,檢查部署環境/服務,上傳TPshop項目到服務器,配置文件的更改,安裝TPshop)

目錄 部署環境/服務&#xff0c;檢查部署環境/服務 檢查部署環境/服務 上傳TPshop項目到服務器&#xff0c;配置文件的更改&#xff0c;安裝TPshop 部署環境/服務&#xff0c;檢查部署環境/服務 一般部署環境&#xff0c;會根據開發寫的部署文檔來一步一步的部署環境。 部署…

C++入門基礎:命名空間,缺省參數,函數重載,輸入輸出

命名空間&#xff1a; C語言是基于C語言的&#xff0c;融入了面向對象編程思想&#xff0c;有了很多有用的庫&#xff0c;所以接下來我們將學習C如何優化C語言的不足的。 在C/C語言實踐中&#xff0c;在全局作用域中變量&#xff0c;函數&#xff0c;類會有很多&#xff0c;這…

緩存 --- Redis基本數據類型

緩存 --- Redis基本數據類型 Redis Intro5種基礎數據類型 Redis Intro Redis&#xff08;Remote Dictionary Server&#xff09;是一款開源的高性能鍵值存儲系統&#xff0c;常用于緩存、消息中間件和實時數據處理場景。以下是其核心特點、數據類型及典型使用場景&#xff1a; …

Redis命令——list

列表類型是用來存儲多個有序的字符串&#xff0c;列表中的每個字符串稱為元素&#xff08;element&#xff09;&#xff0c;?個列表最多可以存儲個元素 在 Redis 中&#xff0c;可以對列表兩端插入&#xff08;push&#xff09;和彈出&#xff08;pop&#xff09;&#xff0c;…

Android Jetpack Compose 狀態管理解析:remember vs mutableStateOf,有啥不一樣?為啥要一起用?

&#x1f331;《Jetpack Compose 狀態管理解析&#xff1a;remember vs mutableStateOf&#xff0c;有啥不一樣&#xff1f;為啥要一起用&#xff1f;》 在 Jetpack Compose 的世界里&#xff0c;UI 是響應式的。這意味著當狀態發生變化時&#xff0c;UI 會自動重組&#xff0…

使用 PCL 和 Qt 實現點云可視化與交互

下面我將介紹如何結合點云庫(PCL)和Qt框架(特別是QML)來實現點云的可視化與交互功能&#xff0c;包括高亮選擇等效果。 1. 基本架構設計 首先需要建立一個結合PCL和Qt的基本架構&#xff1a; // PCLQtViewer.h #pragma once#include <QObject> #include <pcl/point…

mybatis plus打印sql日志到指定目錄

1、mybatis plus打印sql日志 參考文檔&#xff1a;mybatis plus打印sql日志_mybatisplus日志打印-CSDN博客 2、修改 修改InfoLevelLogger Override public void debug(String s) {// 修改這里logger.info(s);log.debug(s); } 增加&#xff1a;log.debug(s); 修改logback.x…

vue3 watch和watchEffect 的用法和區別

在 Vue 3 里&#xff0c;watch 和 watchEffect 都是用于響應式數據變化的 API&#xff0c;但它們在使用方法和應用場景上存在差異。下面詳細介紹它們的用法和區別。 用法 watch watch 用于監聽特定的響應式數據源&#xff0c;當數據源發生變化時&#xff0c;會執行相應的回調…

Qt中修改了UI設計文件后編譯不生效問題的解決辦法

復制工程過來后&#xff1a; 1、刪除build文件 2、刪除.user文件&#xff0c;恢復為文件最初的那樣 3、執行make distclean,刪除所有由先前構建過程生成的文件 4、再次打開工程&#xff0c;修改ui文件編譯生效&#xff01;

EtherCAT轉ProfiNet邊緣計算網關配置優化:汽車制造場景下PLC與機器人協同作業案例

1.行業背景與需求分析 智能汽車焊裝車間是汽車制造的核心工藝環節&#xff0c;某德國豪華品牌在其上海MEB工廠新建的焊裝車間中&#xff0c;采用西門子S7-1500PLC作為ProfiNet主站&#xff0c;負責整線協調與質量追溯&#xff1b;同時部署KUKAKR1500Titan機器人&#xff08;Eth…

day46—雙指針-兩數之和-輸入有序數組(LeetCode-167)

題目描述 給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < index1 < index2 &l…

線性代數 | 知識點整理 Ref 1

注&#xff1a;本文為 “線性代數 | 知識點整理” 相關文章合輯。 因 csdn 篇幅合并超限分篇連載&#xff0c;本篇為 Ref 1。 略作重排&#xff0c;未整理去重。 圖片清晰度限于引文原狀。 如有內容異常&#xff0c;請看原文。 線性代數知識匯總 Arrow 于 2016-11-27 16:27:5…