
typedef struct Solution{
int numsSize;
int *original;
int *shuffled;
} Solution;
Solution* solutionCreate(int* nums, int numsSize) {
Solution *sol = (Solution *)malloc(sizeof(Solution));
sol->numsSize = numsSize;
//int ori[numsSize];
//sol->original = ori;
sol->original = (int *)malloc(sizeof(int)*numsSize);
sol->shuffled = (int *)malloc(sizeof(int)*numsSize);
for (int i=0;i<numsSize;i++){
sol->original[i]=nums[i];
sol->shuffled[i]=nums[i];
}
//memcpy(sol->original, nums, sizeof(int) * numsSize);
//memcpy(sol->shuffled, nums, sizeof(int) * numsSize);
return sol;
}
/** Resets the array to its original configuration and return it. */
int* solutionReset(Solution* obj, int* retSize) {
*retSize = obj->numsSize;
// copy original to shuffled
memcpy(obj->shuffled, obj->original, sizeof(int) * obj->numsSize);
return obj->shuffled;
}
void swap(int* a, int*b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
/** Returns a random shuffling of the array. */
int* solutionShuffle(Solution* obj, int* retSize) {
for(int i = obj->numsSize-1;i>0;i--){
swap(&(obj->shuffled[i]),&(obj->shuffled[rand()%(i+1)]));
}
*retSize = obj->numsSize;
return obj->shuffled;
}
void solutionFree(Solution* obj) {
free(obj->original);
free(obj->shuffled);
free(obj);
}
このプログラムの説明を詳しくしてくれませんか? leetcode384の問題です。
自分で書いたわけではないのでわかりません。
1行1行に説明を加えてくれると助かります。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
何をシているのかは製作者しかわかりません。
データや処理methodを追ってもわからないものはたくさんあります。プログラムとはそういうものです。
ですから、仕様書(言葉や図で説明してあるもの)が大事なのです。
ソートプログラムなども、非常に難解な命令の羅列になっていますが、「大きい順に並べ替える」と書いてあれば非常に簡潔明瞭です。
No.2
- 回答日時:
複数個の整数値を保持できる
Solutionって構造体があって
初期データで生成したり
順番をかき混ぜたり、破棄したりする
関数が書いてあるだけ。
全体の処理目的や処理の流れは全く不明。
No.1
- 回答日時:
> 1行1行に説明を加えてくれると助かります。
そんな必要ある?
> 自分で書いたわけではないのでわかりません。
「何が目的のプログラム」なのかも分かんないの?
だとすれば、「レベルが合ってない」ので単に読むのが早い、って事になるんだけど・・・・・・。
そもそも、
> Returns a random shuffling of the array.
っつーんだから、配列の要素をランダムに交換せよ(だからシャッフル)、ってのが目的でしょ。
だから配列の要素を交換する「swap」を書いて、そいつをランダムに発動してる。
そんだけ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
なぜ高速フーリエ変換は画像のような単純な式なのにこちらのサイト書いてあるプログラムは長文で複雑なので
C言語・C++・C#
-
C言語について。
C言語・C++・C#
-
c言語のポインタについて numの値は変えていないのになぜ2回目のプリントで24になっているのですか
C言語・C++・C#
-
4
C言語のバイナリファイルに関する質問
C言語・C++・C#
-
5
c言語ポインタと構造体について
C言語・C++・C#
-
6
28日以上、31日以下ってC言語でどう表しますか?日本語無しでお願いします。
C言語・C++・C#
-
7
printf()文の書式
C言語・C++・C#
-
8
C言語 cmd 新規ファイルで行ってもこうなります… なぜでしょうか?
C言語・C++・C#
-
9
最適な撮影位置を求めるアルゴリズム
C言語・C++・C#
-
10
プログラミング実行後の表示される値を答えよ #include<stdio.h> void main(
C言語・C++・C#
-
11
構文エラーが出ているのですが、どこが違うかわからないため教えてください。
C言語・C++・C#
-
12
C言語でfor文とif文を簡単に1からかける方法ないですか? 詳しい方ご回答お願い致します。
C言語・C++・C#
-
13
leetcode 384 c言語の問題です
C言語・C++・C#
-
14
C言語でクロージャを記述する
C言語・C++・C#
-
15
このプログラミング誰か教えてください
C言語・C++・C#
-
16
C言語のwhileを使ってプログラムを組みたいです!自分でやってみたのですが答えが合わないので教えて
C言語・C++・C#
-
17
C言語について
C言語・C++・C#
-
18
【至急!!!】c言語のプログラムを書いて実行しようとすると、英語で「プログラムがリソースを消費しすぎ
C言語・C++・C#
-
19
c言語の配列について
C言語・C++・C#
-
20
ポインタの型変換、どうやるんでしたっけ?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
(マルチスレッド)_beginthrea...
-
5
【至急】プログラムにエラーが...
-
6
C言語のハフマン符号化について
-
7
C言語のプログラムについて質問...
-
8
数字列を3桁ごとにカンマで区切...
-
9
C言語、行列の積を求めるプログ...
-
10
c言語の配列を使ってサイコロを...
-
11
read関数をノンブロッキングで...
-
12
商と剰余を同時に求める(C言語)
-
13
return 1L
-
14
std::set<int> で、ある値が何...
-
15
(int *)の意味
-
16
実数の整数部,小数部の取得
-
17
因数分解を行うプログラムについて
-
18
C言語で分からないところがあり...
-
19
単語の出現回数を数え、出現回...
-
20
C言語の課題です
おすすめ情報
公式facebook
公式twitter