技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

golang と Java のソート例

leetCode の
https://leetcode.com/problems/two-city-scheduling

を、golangJava で解いたのだが、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 条件を与えている。