leetCode の
https://leetcode.com/problems/two-city-scheduling
を、golang と Java で解いたのだが、2次元配列(スライス)の sort の処理を書いたので、今後の参考のため、ここに残しておく。
package main import "sort" func twoCitySchedCost(costs [][]int) int { sort.Slice(costs, func(i, j int) bool { return costs[i][0] - costs[i][1] < costs[j][0] - costs[j][1] }) sum := 0 for i, cost := range costs { if i < len(costs) / 2 { sum += cost[0] } else { sum += cost[1] } } return sum }
import java.util.Arrays; public class TwoCitySchedCost { public int twoCitySchedCost(int[][] costs) { Arrays.sort(costs, (a, b) -> (a[0] - a[1]) - (b[0] - b[1])); int sum = 0; for (int i = 0; i < costs.length; i++) { if (i < costs.length / 2) { sum += costs[i][0]; } else { sum += costs[i][1]; } } return sum; } }
どちらも、標準の sort 関数を使って、sort 対象の配列とその sort 条件を与えている。