プログラミングのお題スレ Part22 (831レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
781: デフォルトの名無しさん [sage] 2025/07/27(日) 21:43:59.43 ID:w39E9j9Q >>771 Rust 既に色々と出ているため別の観点からのコード 一時作業メモリ最小 & ソートは1回 & ジェネリック fn f<T: std::cmp::Ord>(input: &[T]) -> Vec<usize> { let len = input.len(); // ポジションのリスト [0, 1, 2, 3, ... , len-1] を作成 let mut pos_list: Vec<usize> = (0..len).collect(); // inputを利用してそのポジションだけをソート pos_list.sort_by_key(|&pos| &input[pos]); // 返すべきランクのリスト let mut rank_list: Vec<usize> = vec![0; len]; // ポジション⇔ランクは逆写像なのでソートは不要 (0..len).for_each(|rank| rank_list[pos_list[rank]] = rank); rank_list } fn main() { assert_eq!(f(&[1, 100, 10, 10000, 1000]), [0, 2, 1, 4, 3]); assert_eq!(f(&[3, 1, 4, 1, 5, 9, 2]), [3, 0, 4, 1, 5, 6, 2]); assert_eq!(f(&[0, 1, 0, 1, 0, 1, 0, 1]), [0, 4, 1, 5, 2, 6, 3, 7]); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/781
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s