problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
leetcode::jump_game_iv::Solution类 参考

#include <leetcode.h>

静态 Public 成员函数

static int minJumps (vector< int > &arr)
 

详细描述

在文件 leetcode.h549 行定义.

成员函数说明

◆ minJumps()

int leetcode::jump_game_iv::Solution::minJumps ( vector< int > &  arr)
static

在文件 leetcode.cpp1204 行定义.

1204 {
1205 if(arr.size() == 1) {
1206 return 0;
1207 }
1208 auto pq = queue<pair<int, int>>();//<下标,step>
1209 auto *flag = new bool[arr.size()];
1210 memset(flag, 0, arr.size() * sizeof(bool));
1211 auto um = unordered_map<int, vector<int>>();//<值,下标>
1212 for(int i = 0; i < arr.size(); i++) {
1213 if(!um.contains(arr[i])) {
1214 auto vec = vector<int>();
1215 vec.push_back(i);
1216 um.insert(pair(arr[i], vec));
1217 } else {
1218 um[arr[i]].push_back(i);
1219 }
1220 }
1221 pq.push(pair(0, 0));
1222 flag[0] = true;
1223 while(!pq.empty()) {
1224 auto [current_i, current_count] = pq.front();
1225 pq.pop();
1226 if(current_i == arr.size() - 1) {
1227 return current_count;
1228 }
1229 if(um.contains(arr[current_i])) {
1230 for(auto i: um[arr[current_i]]) {
1231 if(i != current_i && !flag[i]) {
1232 pq.push(pair(i, current_count + 1));
1233 flag[i] = true;
1234 }
1235 }
1236 }
1237 um.erase(arr[current_i]);
1238 if(current_i - 1 >= 0 && !flag[current_i - 1]) {
1239 pq.push(pair(current_i - 1, current_count + 1));
1240 flag[current_i - 1] = true;
1241 }
1242 if(current_i + 1 < arr.size() && !flag[current_i + 1]) {
1243 pq.push(pair(current_i + 1, current_count + 1));
1244 flag[current_i + 1] = true;
1245 }
1246 }
1247 delete[] flag;
1248 return 0;
1249 }
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a7_2::vec.

被这些函数引用 leetcode::jump_game_iv::TEST().


该类的文档由以下文件生成: