الفنون رقم 006
الفنون رقم 006
ARTS هو نشاط بدأه
由左耳朵耗子--陈皓: قم بإجراء سؤال واحد على الأقل عن خوارزمية leetcode كل أسبوع، واقرأ مقالًا تقنيًا واحدًا على الأقل باللغة الإنجليزية وعلق عليه، وتعلم مهارة فنية واحدة على الأقل، وشارك المقالة مع الآراء والأفكار. (أي أن الخوارزمية والمراجعة والنصائح والمشاركة يشار إليها باسم ARTS) وتستمر لمدة عام واحد على الأقل.
فنون 006
هذه هي المادة السادسة. إنه مكتوب بشكل سيء نسبيًا. وآمل أن تصبح أفضل وأفضل في المستقبل.
سؤال خوارزمية الخوارزمية
سؤال خوارزمية Leetcode 41 أول رقم موجب مفقود (أول رقم موجب مفقود): الصعوبة : الصعبة
Given an unsorted integer array, find the smallest missing positive integer.
Example 1:
Input: [1,2,0]
Output: 3
Example 2:
Input: [3,4,-1,1]
Output: 2
Example 3:
Input: [7,8,9,11,12]
Output: 1
Note:
Your algorithm should run in O(n) time and uses constant extra space.
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
说明:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
أفكار لحل المشكلات: وفقًا لمتطلبات السؤال، علينا إيجاد أصغر عدد صحيح موجب. لذا بالنسبة لمصفوفة معينة، فإن الحد الأدنى لقيمة القيمة المرجعة هو 1. ما هي القيمة القصوى؟ يجب أن تكون القيمة القصوى هي عدد العناصر في المصفوفة بالإضافة إلى 1. إذا كنت تستطيع التفكير في هذا، فسيتم حل المشكلة.
التنفيذ الخاص بي هو كما يلي:
//第一次一次通过的代码 而且运行时间是0ms
int firstMissingPositive(int* nums, int numsSize) {
int i = 1;
for ( ;i<= numsSize; i++) {
int flag = 0;
for (int j = 0; j < numsSize; j++) {
int data = nums[j];
if (data ==i) {
flag =1;
break;
}
}
if (flag == 0) {
return i;
}
}
return i;
}
الحلان التاليان عبارة عن رموز مقدمة من قبل الآخرين. يمكنك التعلم من أفكار الآخرين.
int firstMissingPositive1(int* nums, int numsSize) {
int *hashTable = (int*)calloc(numsSize+1,sizeof(int));
int res = 1;
for(int i=0;i<numsSize;++i){
if(nums[i]>numsSize || nums[i] < 0)
continue;
hashTable[nums[i]]++;
}
while(hashTable[res]){
res++;
}
return res;
}
int firstMissingPositive2(int* nums, int numsSize) {
int temp, i, j = 0;
for (i = 0; i < numsSize; i++)
{
while ((i != nums[i] - 1) && nums[i] > 0 && nums[i] < numsSize)
{
if ((temp = nums[nums[i] - 1]) == nums[i]) break;
nums[nums[i] - 1] = nums[i];
nums[i] = temp;
}
while (nums[j] == j + 1) j++;
}
return (j + 1);
}
الحل التالي مقتبس من 刘新宇的算法新解一书، وهو أكثر توفيرًا للمساحة (للحصول على أفكار محددة، يمكنك حل خوارزمية Google Liu Xinyu الجديدة، وهناك كتاب إلكتروني)
#define N 1000000 // 1 million #define WORD_LENGTH sizeof(int) * 8
void setbit(unsigned int* bits, unsigned int i) {
bits[i / WORD_LENGTH] |= 1<<(i % WORD_LENGTH);
}
int testbit(unsigned int* bits, unsigned int i) {
return bits[i/WORD_LENGTH] & (1<<(i % WORD_LENGTH));
}
unsigned int bits[N/WORD_LENGTH+1];
int min_free(int* xs, int n) {
int i, len = N/WORD_LENGTH+1;
for(i=0; i<len; ++i)
bits[i]=0;
for(i=0; i<n; ++i)
if(xs[i]<n)
setbit(bits, xs[i]);
for(i=0; i<=n; ++i)
if(!testbit(bits, i))
return i;
}
مراجعة
هذه المقالة مأخوذة من: https://medium.freecodecamp.org/why-developers-should-know-how-to-write-dc35aa9b71ab <المركز> <حجم الخط=6> لماذا يجب أن يعرف المطورون كيفية الكتابة؟ </font> </مركز> قرأت مؤخرًا مقالًا بقلم جون مايدا حول كيف أن الكتابة - وليس البرمجة - هي مهارة التصميم الوحيدة. لقد جعلني ذلك أفكر في الدور الذي تلعبه الكتابة في حياة المطورين. لقد رأيت مؤخرًا مقالًا بقلم جون مايدا حول كيف أن الكتابة - وليس البرمجة - هي نصيحة التصميم الفريدة. هذا جعلني أفكر في الدور الذي تلعبه الكتابة في حياة المطور.
في عالم اليوم المعتمد على البيانات والمثقل بالبيانات، هناك الكثير من المحتوى الذي يمكن استهلاكه. نتعرض باستمرار لمقاطع الفيديو والصور والإعلانات والبودكاست والمقالات. تتمتع كل واحدة من هذه الوسائط بنوع مختلف من الجاذبية، ويبدو دائمًا أن هناك منافسة قوية لمحاولة جذب انتباهنا والاحتفاظ به.
في عالم اليوم القائم على البيانات والمكثف، هناك الكثير من المحتوى الذي يمكن استهلاكه. نتعرض باستمرار لوابل من مقاطع الفيديو والصور والإعلانات والبودكاست والمقالات. تتمتع كل واحدة من هذه الوسائط بنوع مختلف من الجاذبية، ويبدو دائمًا أن هناك منافسة شديدة تحاول جذب انتباهنا والاحتفاظ به.
عينة من الأنواع المختلفة لقنوات الوسائط المتاحة (صورة من “تغيير المحادثات”).
مع انتشار القنوات الإعلامية المختلفة في العقود العديدة الماضية، أصبح هناك تركيز أقل على المحتوى المكتوب وأكثر على المحتوى المرئي - وخاصة مقاطع الفيديو والصور. وفقًا لهذه المذكرة الصادرة عن شركة 3M في عام 1997، يستطيع الأشخاص معالجة العناصر المرئية أسرع بـ 60 ألف مرة من معالجة النصوص. على مدى العقود القليلة الماضية، ومع تطور القنوات الإعلامية المختلفة، كان هناك تركيز أقل على المحتوى النصي والمزيد من الاهتمام بالمرئيات - وخاصة مقاطع الفيديو والصور. وفقا لمذكرة عام 1997 من شركة 3M، يقوم الأشخاص بمعالجة الصور بمعدل 60 ألف مرة أسرع من النص.
ومع ذلك، فإن معرفة كيفية الكتابة لا تزال مهارة مهمة. يمكن أن تكون الكلمات واحدة من أنقى أشكال التعبير عن أفكار المرء. يمكن تقديم الكلمات كرسائل أو مقالات أو رسائل نصية. سيقوم الكاتب بنشر أفكاره ومشاركتها على شكل حبر على ورق أو وحدات بكسل رقمية على الشاشة. ومع ذلك، فإن معرفة كيفية الكتابة لا تزال مهارة مهمة. اللغة هي إحدى أنقى الأشكال التي يستطيع الإنسان من خلالها التعبير عن أفكاره. يمكن التعبير عن اللغة برسالة أو مقال أو رسالة نصية. يتواصل الكتّاب ويشاركون أفكارهم بالحبر على الورق أو بالبكسلات الرقمية على الشاشة.
لقد تعلمت أن الكتابة الجيدة يمكن أن تكون حافزًا للنجاح، سواء كان ذلك في مجال النمو الشخصي، أو التطوير المهني، أو الرخاء الاجتماعي. لقد تُرجمت الكثير من المهارات التي طورتها من خلال كتابة عشرات المقالات في السنوات القليلة الماضية إلى دوري الجديد بدوام كامل كمهندسة برمجيات في شركة Putnam Investments.
تعلمت أن الكتابة الجيدة يمكن أن تكون حافزًا للنجاح، سواء كان ذلك النمو الشخصي، أو التطوير المهني، أو الرخاء الاجتماعي. على مدى السنوات القليلة الماضية، تُرجمت العديد من المهارات التي اكتسبتها من كتابة عشرات المقالات إلى دوري الجديد بدوام كامل كمهندس برمجيات في شركة Putnam Investments.
تصوير آرون بوردن على Unsplash.
كمطور، إليك خمس فوائد حصلت عليها من خلال تعلم الكتابة. كمطور، إليك خمس فوائد تعلمتها من تعلم الكتابة.
1. الكتابة الجيدة تجعلك متواصلاً أفضل (الكتابة الجيدة تجعلك متواصلاً أفضل)
إن الفائدة الأكثر وضوحًا التي أدركتها من الكتابة بشكل متكرر هي أن الكتابة الجيدة جعلتني أتمكن من التواصل بشكل أفضل. كبشر، نحن نعتمد بشكل أساسي على كلماتنا لنقل أفكارنا ومشاعرنا للآخرين. من خلال الكتابة في كثير من الأحيان، أستطيع التعبير عن أفكاري بشكل أسهل، دون الحاجة إلى القلق بشأن ما إذا كنت أستخدم الكلمات الصحيحة، أو أكتب أكثر من اللازم أو أقل من اللازم، أو أكون غامضًا أو معقدًا للغاية. الميزة الأكثر وضوحًا التي أدركتها من الكتابة بشكل متكرر هي أن الكتابة الجيدة تجعلني أتمكن من التواصل بشكل أفضل. كبشر، نحن نعتمد بشكل أساسي على كلماتنا لنقل أفكارنا ومشاعرنا للآخرين. من خلال الكتابة بانتظام، يمكنني التعبير عن أفكاري بسهولة أكبر دون الحاجة إلى القلق بشأن ما إذا كنت أستخدم الكلمات الصحيحة، أو أكتب أكثر من اللازم أو أقل من اللازم، أو أكون غامضًا أو معقدًا للغاية.
صورة من https://zalarieunique.ru.
في العمل، يمكنني صياغة رسائل بريد إلكتروني موجزة أو إرسال رسائل فورية دون الحاجة إلى اللجوء إلى قاموس للتهجئة الصحيحة للكلمة أو قاموس المرادفات لأجعل نفسي أبدو أكثر ذكاءً. عندما تتدفق الأفكار بحرية من عقلك إلى يدك، فإن الكلمات التي تخرج على الورق تتدفق بسلاسة ولا يلزم التلاعب بها لتحقيق غرض محدد. في العمل، يمكنني صياغة رسائل بريد إلكتروني موجزة أو إرسال رسائل فورية دون الحاجة إلى اللجوء إلى قاموس أو قاموس المرادفات لكي أبدو ذكيًا. عندما تتدفق الأفكار بحرية من رأسك إلى يديك، فإن الكلمات الموجودة على الورقة تتدفق بسلاسة دون الحاجة إلى التلاعب بها لتحقيق غرض محدد.الكتابة، مثل العديد من الحرف الأخرى، تحتاج إلى سنوات من الممارسة لصقلها. أفضل جزء من الكتابة هو أن التحسن يمكن اكتشافه. يمكنك إلقاء نظرة على الأعمال السابقة ورؤية التحسن الملحوظ بمرور الوقت. الكتابة، مثل العديد من الحرف الأخرى، تحتاج إلى سنوات من الممارسة لصقلها. أفضل ما في الكتابة هو أن التقدم ملحوظ. يمكنك إلقاء نظرة على الأعمال السابقة ورؤية التحسينات الملحوظة مع مرور الوقت.
2. الكتابة للجمهور تساعدك على كتابة وثائق أفضل (الكتابة للجمهور يمكن أن تساعدك على كتابة وثائق أفضل)
جزء من معايير كونك مطورًا جيدًا هو معرفة كيفية توصيل المتطلبات والمواصفات الفنية إلى أصحاب المصلحة الآخرين. تعد معرفة جمهورك جزءًا مهمًا من الكتابة - وينطبق الشيء نفسه عند التواصل مع أصحاب المصلحة أو كتابة أي نوع من الوثائق.
جزء من كونك مطورًا جيدًا هو معرفة كيفية توصيل المتطلبات والمواصفات الفنية إلى أصحاب المصلحة الآخرين. تعد معرفة جمهورك جزءًا مهمًا من الكتابة، وينطبق الشيء نفسه على التواصل مع أصحاب المصلحة أو كتابة أي نوع من الوثائق.
عند العمل مع أعضاء فريق أقل تقنيًا، يتعين عليك شرح المصطلحات والمفاهيم الفنية بطريقة منطقية ويتردد صداها لدى كل من تعمل معه. على سبيل المثال، عند العمل مع مالكي المنتجات والمصممين، أحاول عادةً تقديم نظرة عامة عالية المستوى على كل ما أعمل عليه دون التورط في التفاصيل. بالنسبة للمصممين، أحاول إيصال كيفية تنفيذ الميزة من منظور تجربة المستخدم أو واجهة المستخدم. بالنسبة لأصحاب المنتجات، أحاول تأطير عملي من منظور العمل.
عند العمل مع أعضاء فريق أقل تقنية، يجب عليك شرح المصطلحات والمفاهيم الفنية بطريقة منطقية ويتردد صداها مع أي شخص تعمل معه. على سبيل المثال، عند العمل مع مالكي المنتجات والمصممين، عادةً ما أقدم نظرة عامة عالية المستوى حول ما أفعله دون التورط في التفاصيل. بالنسبة للمصممين، أحاول توضيح كيفية تنفيذ الميزة من تجربة المستخدم أو منظور واجهة المستخدم. بالنسبة لأصحاب المنتجات، أحاول تنظيم عملي من منظور تجاري.
بالإضافة إلى ذلك، يتعين على المطورين أيضًا توصيل أعمالهم إلى مطورين آخرين. سواء كان الأمر يتعلق بتسمية المتغيرات أو أسماء الوظائف، أو كتابة التعليقات المضمنة، أو توثيق كيفية عمل النظام من مستوى عالٍ، يحتاج المطورون إلى معرفة كيفية كتابة وثائق جيدة بحيث تكون التعليمات البرمجية مفهومة وقابلة للصيانة. عندما أكتب الوثائق، أحاول أن أجعلها كاملة قدر الإمكان. سيتمكن أي مطور يعمل على قاعدة التعليمات البرمجية الخاصة بي من فهم البنية عالية المستوى، كما سيكون قادرًا على المساهمة على الفور (فورًا/فورًا) دون الحاجة إلى تفكيك التعليمات البرمجية وإجراء هندسة عكسية لها.
بالإضافة إلى ذلك، يجب على المطورين توصيل عملهم مع المطورين الآخرين. سواء تسمية المتغيرات أو الوظائف، أو كتابة التعليقات المضمنة، أو توثيق كيفية عمل النظام من مستوى عالٍ، يحتاج المطورون إلى معرفة كيفية كتابة وثائق جيدة بحيث يكون من السهل فهم التعليمات البرمجية وصيانتها. عندما أكتب وثيقة، أحاول أن أجعلها كاملة قدر الإمكان. يفهم أي مطور يعمل على قاعدة التعليمات البرمجية الخاصة بي البنية عالية المستوى ويمكنه المساهمة على الفور دون الحاجة إلى تفكيك التعليمات البرمجية وإجراء هندسة عكسية لها.
3. الكتابة تجعلك تقدر خصوصيات البرمجة
في عام 2011، نشر أحد مستخدمي Redditor في القسم الفرعي /r/programming حول الاختلافات والتشابهات بين الكتابة والبرمجة. يقول البعض أن البرمجة تشبه الكتابة، فهي مهارة ليست صعبة من الناحية المفاهيمية، ولكنها شيء يتم تحسينه بمرور الوقت. ويذكر آخرون أن الكتابة تختلف تمامًا عن البرمجة، حيث أن الكتابة هي مسعى إبداعي، في حين أن البرمجة هي علم أكثر تعقيدًا ويتطلب فهمًا أعمق للمفاهيم الأساسية.
في عام 2011، نشر أحد مستخدمي reddit على /r/programming حول أوجه التشابه والاختلاف بين الكتابة والبرمجة. يقول بعض الناس أن البرمجة تشبه الكتابة من حيث أنها مهارة ليست صعبة من الناحية المفاهيمية ولكنها تصبح أكثر دقة مع مرور الوقت. ويعتقد البعض الآخر أن الكتابة والبرمجة مختلفان تمامًا لأن الكتابة مسعى إبداعي بينما البرمجة علم أكثر تعقيدًا يتطلب فهمًا أعمق للمفاهيم الأساسية.
الإجماع العام، مع اختلافات طفيفة في الفروق الدقيقة لكل منهما، هو أن كل من الكتابة والبرمجة تتطلب معرفة أساسية بالأساسيات - بناء الجملة، والبنية، والدلالات. ومع ذلك، فإن ما يميز الهاوي عن المخضرم (ذو الخبرة؛ المخضرم/المخضرم/المخضرم) في كل مجال هو القدرة على الإبداع والتعامل مع تعقيد النظام أو الموضوع المطروح.
الإجماع العام، مع اختلافات طفيفة في كل التفاصيل، هو أن كل من الكتابة والبرمجة تتطلب معرفة الأساسيات الأساسية - بناء الجملة، والبنية، والدلالات. ومع ذلك، في كل مجال، فإن ما يفرق الهواة عن المخضرمين هو قدرتهم الإبداعية على التعامل مع تعقيدات النظام أو الموضوع المطروح.
تتطرق الكثير من هذه الأفكار إلى مجالات اللغويات واللغة.
تتعلق العديد من وجهات النظر هذه بمجالات اللغويات واللغة.الكتابة تعلم المطورين التفكير بشكل مختلف. بالنسبة للمطورين، قد تبدو كتابة التعليمات البرمجية مقيدة نظرًا لوجود عدد محدود من الكلمات الرئيسية والوظائف والمكتبات التي يمكن استخدامها. ومع ذلك، فإن اللغات المكتوبة تسمح بالحرية الكاملة في التعبير بطريقة لا تسمح بها لغات البرمجة عادة.
الكتابة تعلم المطورين التفكير بشكل مختلف. بالنسبة للمطورين، يمكن أن تكون كتابة التعليمات البرمجية مقيدة بسبب العدد المحدود من الكلمات الأساسية والوظائف والمكتبات التي يمكن استخدامها. إلا أن اللغة المكتوبة تتيح حرية كاملة في التعبير لا تسمح بها لغات البرمجة بشكل عام.
يطرح تيد كامينسكي نقطة أخرى مثيرة للاهتمام حول الغرض من الكلمات حيث نستخدمها في التعليمات البرمجية وفي الوسائط الأخرى. يطرح تيد كامينسكي نقطة أخرى مثيرة للاهتمام عندما يتعلق الأمر بالطريقة التي نستخدم بها الكلمات في البرمجة والوسائط الأخرى.
“For one, writing is meant(意味着) to be read. Code is meant to be read and changed.” -Ted Kaminski
“首先,写作是为了阅读。 代码应该被阅读和更改。“ - 泰德卡明斯基
في عالم الكتابة، يبدو كما لو أن انقسامًا صارمًا قد تم إنشاؤه بمرور الوقت لفصل اهتمامات الكتاب عن اهتمامات القراء. تبدو الكتابة كأنها حجر، في حين أن البرمجة هي مسعى مستمر يسعى إلى تحسين (استنادًا إلى؛ قريب؛ على) القديم.
في مجال الكتابة، يبدو أن انقسامًا صارمًا قد نشأ مع مرور الوقت، يقسم اهتمامات الكاتب والقارئ. تبدو الكتابة ثابتة (في الحجر)، في حين أن البرمجة هي جهد مستمر لتحسين شيء قديم.
في العديد من النواحي، تشترك الكتابة “بشكل إبداعي” وكتابة التعليمات البرمجية في العديد من أوجه التشابه، لكن معرفة الاختلافات بينهما تجعلني أقدر كليهما أكثر من ذلك بكثير.
من نواحٍ عديدة، هناك العديد من أوجه التشابه بين الكتابة “بشكل إبداعي” وكتابة التعليمات البرمجية، لكن فهم الاختلافات بينهما جعلني أقدر كليهما أكثر.
4. الكتابة تمنحك فرصة لتطبيق ما تتعلمه (الكتابة تمنحك فرصة لتطبيق ما تتعلمه)
عندما أكتب، أشعر دائمًا وكأنني أجري محادثة مع نفسي. عند الانتهاء من كتاب أو اكتشاف شيء مهم، أحاول أن أترك أفكاري تتجول من خلال كتابة مقال حول ما تعلمته. بالنسبة لي، وجدت أن أفضل طريقة لدفع معرفتي للأمام في مجال معين (خاص؛ مفصل؛ فريد؛ صعب الإرضاء) هي الكتابة عن هذا الموضوع.
عندما أكتب، أشعر دائمًا وكأنني أجري محادثة مع نفسي. عندما أنتهي من قراءة كتاب أو اكتشاف شيء مهم، أحاول أن ألتف حوله من خلال كتابة مقال حول ما تعلمته. بالنسبة لي، أجد أن أفضل طريقة لتطوير معرفتي في مجال معين هي الكتابة عن هذا الموضوع.
في freeCodeCamp والعديد من المواقع الأخرى التي تقدم دروسًا تعليمية أساسية حول التطوير، يكتب المؤلفون عن مجموعة متنوعة من المواضيع والمفاهيم المختلفة. جزء من السبب وراء تخصيص العديد من المتطوعين الوقت لكتابة المقالات ليس فقط حتى يتمكنوا من مشاركة تجاربهم ومساعدة الآخرين، ولكن أيضًا حتى يتمكنوا من تعزيز معرفتهم المكتسبة بالموضوع الذي يكتبون عنه.
في freeCodeCamp والعديد من المواقع الأخرى التي توفر دروسًا تعليمية أساسية حول التطوير، يكتب المؤلفون عن مجموعة متنوعة من المواضيع والمفاهيم المختلفة. جزء من السبب وراء تكريس الكثير من المتطوعين وقتهم لكتابة المقالات هو أنه ليس بإمكانهم مشاركة تجاربهم ومساعدة الآخرين فحسب، بل يمكنهم أيضًا تعزيز معرفتهم بالموضوعات التي يكتبون عنها.
freeCodeCamp، أحد أفضل الموارد لدروس ومقالات التطوير.
freeCodeCamp، أحد أفضل الموارد لدروس ومقالات التطوير.
عندما أكتب عن موضوعات أتعلم عنها، عادةً ما أقوم بإجراء (السلوك؛ إدارة vt. التوجيه؛ الأداء؛ السلوك؛ التنفيذ) بحثًا إضافيًا (إضافيًا، إضافيًا) (البحث؛ التحقيق) والذي غالبًا ما يؤدي إلى ظهور مقتطفات (أجزاء) من المعلومات التي لم أكن لأتعرض لها بطريقة أخرى. وجهات النظر ووجهات النظر التي تتحدى نظرتي الأولية. إن عملية الكتابة برمتها عبارة عن محادثة حية ومستمرة تسمح لي بمعالجة المعلومات التي أصادفها وإصدار أحكامي الخاصة.
عندما أكتب عن موضوع أعرف عنه شيئًا ما، غالبًا ما أقوم بإجراء بحث إضافي، والذي غالبًا ما يعرضني لمقتطفات من المعلومات التي لا أتعرض لها عادةً. عندما أكتب، من المرجح أن أتذكر ما تعلمته. بالإضافة إلى ذلك، أواجه أحيانًا تصورات ووجهات نظر مختلفة تتحدى وجهات نظري الأصلية. إن عملية الكتابة برمتها عبارة عن محادثة حية ومستمرة تسمح لي بمعالجة المعلومات التي أواجهها وإصدار أحكامي الخاصة.
الكتابة طريقة رائعة لتنظيم أفكارك وجمعها (تصوير رادو فلورين على Unsplash).
تعد الكتابة طريقة رائعة لاستيعاب ومعالجة المعلومات التي نتلقاها. ومع ذلك، فإن سعة الاطلاع والذكاء لا تنبع من كمية المعلومات التي نتلقاها، ولكن من قدرتنا على معالجة تلك المعلومات واستخلاص استنتاجات ذات معنى منها.
الكتابة هي طريقة رائعة لاستيعاب ومعالجة المعلومات التي لدينا. ومع ذلك، فإن سعة الاطلاع والذكاء لا ينشأان من كمية المعلومات التي نتلقاها، ولكن من قدرتنا على معالجة تلك المعلومات واستخلاص استنتاجات ذات معنى منها.
الكتابة هي وسيلة رائعة لاستيعاب ومعالجة المعلومات. ومع ذلك، فإن المعرفة والذكاء لا يأتي من كمية المعلومات التي نستوعبها، ولكن من قدرتنا على معالجة تلك المعلومات واستخلاص استنتاجات ذات معنى منها.#### 5. الكتابة كشكل من أشكال التنفيس (الكتابة شكل من أشكال التنفيس/الكتابة شكل من أشكال التنفيس) هذا السبب الأخير الذي يجعلني أعتقد أن الكتابة مهمة قد لا يكون ذا صلة مباشرة بدور المطور مثل الأسباب الأربعة الأخيرة. لكنني أعتقد أن الأمر لا يقل أهمية، إن لم يكن أكثر. جزء كبير من سبب اختياري للكتابة هو أن الكتابة هي متنفس عظيم لمشاعري ومشاعري. لا أحب أن أبقي مشاعري وأفكاري مكبوتة، لذلك أبحث عن الكتابة كشكل من أشكال التنفيس. السبب الأخير الذي يجعلني أعتقد أن الكتابة مهمة قد لا يرتبط بشكل مباشر بدور المطور للأسباب الأربعة الأخيرة. لكنني أعتقد أن هذا مهم أيضًا، إن لم يكن أكثر أهمية. جزء كبير من سبب اختياري للكتابة هو أن الكتابة هي منفذ مهم لمشاعري ومشاعري. لا أحب أن أبقي مشاعري وأفكاري مكبوتة، لذلك أستخدم الكتابة كشكل من أشكال التنفيس. السبب الأخير الذي يجعلني أعتقد أن الكتابة مهمة قد لا يكون مرتبطًا بشكل مباشر بدور المطور مثل الأسباب الأربعة الأخيرة. ولكن أعتقد أن الأمر لا يقل أهمية، إن لم يكن أكثر أهمية. جزء كبير من سبب اختياري للكتابة هو أن الكتابة هي منفذ عظيم بالنسبة لي للتعبير عن مشاعري ومشاعري. لا أحب أن أبقي مشاعري وأفكاري مكبوتة، لذا أسعى إلى الكتابة كشكل من أشكال التنفيس.
عندما كنت أصغر سنا، كنت أكتب يومياتي في مذكراتي. الآن أكتب عن مجموعة متنوعة من المواضيع وأنشرها ليقرأها العالم. لكن بين الحين والآخر، سأعود إلى القلم والورقة للتعبير عن أفكاري الشخصية. أحتفظ بمجلة خاصة أكتب فيها أحيانًا عندما تكون لدي شكوك حول أهدافي المهنية وحياتي الشخصية وعلاقاتي الاجتماعية وكل شيء بينهما. عندما كنت أصغر سنا، كنت أكتب إدخالات اليوميات في مجلة. والآن أكتب عن العديد من المواضيع وأنشرها ليقرأها العالم. لكن من وقت لآخر أستخدم القلم والورقة للتعبير عن أفكاري الشخصية. أحيانًا أكتب في مذكراتي الشخصية عندما أشك في أهدافي المهنية وحياتي الشخصية وعلاقاتي الاجتماعية وكل شيء بينهما. عندما كنت صغيرا، كنت أحتفظ في كثير من الأحيان بمذكراتي. الآن، أكتب عن مجموعة متنوعة من المواضيع وأنشرها ليقرأها العالم. لكن بين الحين والآخر، أعود إلى القلم والورقة للتعبير عن أفكاري الشخصية. أحتفظ بمذكرة شخصية أكتب فيها أحيانًا عندما يكون لدي أسئلة حول أهدافي المهنية وحياتي الشخصية وعلاقاتي الاجتماعية وكل شيء بينهما.
<حجم الخط=6>
- لا يوجد شيء للكتابة. كل ما تفعله هو الجلوس أمام الآلة الكاتبة والنزف.* </font> لا شيء للكتابة عن المنزل. كل ما عليك فعله هو الجلوس أمام الآلة الكاتبة والتنزف. الكتابة لا شيء. كل ما تفعله هو الجلوس أمام الآلة الكاتبة والنزف.
عندما أكتب عن مشاعري، أشعر وكأنني أتحدث إلى صديق يجيد الاستماع. إنها طريقة بالنسبة لي للتخلص من المشاعر السلبية والتحدث إلى صفحة فارغة دون خوف من الحكم. عندما أكتب عن مشاعري، أشعر وكأنني أتحدث إلى صديق يستمع جيدًا. إنها طريقة بالنسبة لي لتصفية ذهني من السلبية والتحدث إلى صفحة فارغة دون خوف من الحكم. عندما أكتب عن مشاعري، أشعر وكأنني أتحدث إلى صديق يستمع جيدًا. بالنسبة لي، إنها طريقة للتخلص من المشاعر السلبية والتحدث إلى صفحة فارغة دون خوف من الحكم عليك.
تتمتع الكتابة بالكثير من الفوائد، وعلى الرغم من أنها قد لا تكون طريقتك المفضلة للتعبير عن أفكارك، إلا أنها مهارة مطلوبة ومفيدة حتى في عالم اليوم المتنافر والفوضوي. حتى لو كنت مبتدئًا في عالم الكتابة، أنصحك بمحاولة الجلوس بمفردك مع أفكارك والسماح لعقلك بالتدفق بحرية. إنه لأمر مدهش ما يمكنك التوصل إليه. هناك العديد من الفوائد للكتابة، وعلى الرغم من أنها قد لا تكون خيارك الأول للتعبير عن أفكارك، إلا أنها مهارة ضرورية ومفيدة حتى في عالم اليوم الصاخب والفوضوي. حتى لو كنت مبتدئًا في عالم الكتابة، أنصحك بالتفكير في أفكارك بمفردك وترك أفكارك تتدفق بحرية. ما يمكنك التفكير فيه هو أمر مذهل. للكتابة فوائد عديدة، ورغم أنها قد لا تكون خيارك الأول للتعبير عن أفكارك، إلا أنها مهارة ضرورية ومفيدة، حتى في عالم اليوم الصاخب والمربك. حتى لو كنت جديدًا في الكتابة، أقترح عليك أن تحاول الجلوس بمفردك مع أفكارك والسماح لأفكارك بالتدفق بحرية. إنه لأمر مدهش ما يمكنك التوصل إليه.
. . .
شكرا لأخذ الوقت للتحقق من مقالتي! شكرا لأخذ الوقت الكافي للتحقق من مقالتي!
إذا أعجبك هذا المقال، قم بإسقاط بعض التصفيقات، وتابعني على Medium، وأوصي بهذه المقالة لأصدقائك. لا تتردد في متابعتي على Instagram أو التواصل معي على LinkedIn! إذا أعجبك هذا المقال، يرجى وضع بعض التصفيقات، واتباع تعليماتي، والتوصية بهذه المقالة لأصدقائك. لا تتردد في متابعتي على Instagram أو التواصل معي على LinkedIn!
ديريك مي http://www.derekmei.com
نصائح:
كيفية تنزيل صورة كبيرة
نستخدم عادةً SDWebImage لتنزيل الصور. يقوم SDWebImage بتنزيل الصور مباشرة إلى الذاكرة ويستخدمها مباشرة للعرض. ومع ذلك، إذا كانت الصورة كبيرة جدًا، فمن المحتمل أن يؤدي تنزيلها مباشرةً باستخدام SDWebImage إلى زيادة مفاجئة في الذاكرة والتسبب في حدوث عطل. كيفية حل هذه المشكلة؟ لدى Apple رسميًا مثال لتحميل الصور الكبيرة المحلية (https://developer.apple.com/library/archive/samplecode/LargeImageDownsizing/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011173-Intro-DontLinkElementID_2),参照这个例子,我们可以先把图片下载到本地,然后再用苹果的例子进行加载图片,下载图片到本地可以用AFNetWorking,把图片先下载到本地。
شارك:
كيفية تعلم بنية البيانات بشكل جيد:
فيما يلي آراء بعض الأشخاص الآخرين كمرجع:
https://www.zhihu.com/question/19830721/answer/205887662
数据结构的那些排序算法总是记不住,这个真的背的吗?
https://www.zhihu.com/question/51337272/answer/438910111
背下来吧,就背`快排`和`堆排`就行,`归并排序`不用背,但最好背下来怎么合并两个有序链表。这三个(其实是两个半)背下来,可以很多变化,比如说快排可以变换成找top k或者中位数的selection算法。堆排背下来就搞懂了二叉堆,堆可以做N多涉及优先级队列的算法,最短路也用得到。这些搞下来,你就熟悉了数组,链表,堆,二叉树,然后你会发现二叉树可以放在数组里,也可以像链表那样连着。图也是可以用数组和链表来表达成邻接表,然后你会发现Hash表也是类似的结构。到此为止,你只需要背这两个半的排序,本科时代的数据结构与算法你就基本学通了。。。。
فيما يلي بعض ملخصات الفرز:
理解的基础上归下类,记下每种特点就行了,还是挺直观的。下面就以常用的六个排序算法(升序)为例说下特点。
三种`n^2`的:冒泡,选择和插入。
冒泡:目的,每次排好最后一个。方式,从第一个开始查看相邻俩,不合适(前面的大)就交换,这样最后一个一定是最大的。然后,数组元素减一(最后一个排好了扔了吧),缩小规模再来一次。
选择:每次从待选数组中拎出一个最大的来,放到最后,然后缩小规模再来一次。
插入:假设后面的序列是有序的,每次从剩余数组中拎出最后一个,插入到有序数组中合适位置。然后剩余数组缩小规模再插一次。
三种nlgn的:快排,归并和堆排。
快排:每次随便选一个,把它整合适了(放到最终有序数组正确位置),然后比他小的扔左边,比他大的扔右边。然后除掉该数字外的左右子数组各自缩小规模再来一次。
归并:随便找个位置,砍成两半。这两半各自缩小规模了吧,然后假设他们自己来了好多次排好了。最后合并这俩有序数组就行。
堆排:这个比较有意思,核心要实现一个堆化函数。这个函数什么意思呢,就是假设一个大顶堆只有根元素不合法,左右子树都合法(符合堆性质),然后把堆顶元素一路往下搞,跟冒泡差不多,使整个树满足堆的性质。然后呢,把整个数组搞成符合堆的性质(自底而上,从第一个有孩子的元素一直调用堆化函数搞到根元素),把第一个(堆顶,即最大元素)和最后一个交换。如此一来,规模缩小一个,再来一次(堆化&交换)。其他还有shell排啦,桶排啦。不急,消化了这六个再说。
即便你看了算法的证明,某种程度上还是“背”(为什么这么说,后面会详述)。我自己遇到新算法基本是会看证明的,但是发现没多久还是会忘掉,这是死记硬背的标准症状。如果你也啃过算法书,我相信很大可能性你会有同感:为什么当时明明懂了,但没多久就忘掉了呢?为什么当时明明非常理解其证明,但没过多久想要自己去证明时却发现怎么都没法补上证明中缺失的一环呢?(http://mindhacks.cn/2011/07/10/the-importance-of-knowing-why-part3/)
رأيي: عند تعلم الخوارزميات وهياكل البيانات، إذا كان الأساس ضعيفًا نسبيًا، فيمكنك أولاً كتابة هياكل البيانات لبعض الخوارزميات الأساسية، وبعد ذلك يجب أن تكون قادرًا على تنفيذ هذه الخوارزميات الأساسية وهياكل البيانات بنفسك. بعد فهم هذه الأشياء الأساسية بشكل كامل، يمكنك بعد ذلك حل الأسئلة الأكثر صعوبة، لأن حلول الأسئلة الأكثر صعوبة ستستخدم الأشياء الأساسية. لا تأخذ الأسئلة الصعبة منذ البداية. لا معنى له. لن يؤدي ذلك إلى تقويض ثقتك بنفسك فحسب، بل لن تتمكن من فهم العديد من الحلول. كل ما عليك فعله هو التعرف على الخوارزميات الأساسية وهياكل البيانات. إذا كنت على دراية بها، فيمكنك على الأقل أن تكون قادرًا على تنفيذها في التعليمات البرمجية. هذا لا يعني فقط أنك تشعر أنك تفهمه. هناك فجوة كبيرة بين الفهم والتنفيذ. فقط عندما تقوم بتنفيذه بنفسك، يمكنك أن تشعر بالتفاصيل والجوهر.
ومن الأفضل أن تتعرف على الفرز والبحث كما يلي: الفرز الشائع الاستخدام: فرز الإدراج فرز الاختيار دمج النوع نوع الفقاعة نوع الكومة فرز سريع فرز العد نوع الجذر نوع دلو
البحث عن هيكل: شجرة البحث الثنائية [BST] شجرة البحث الثنائية المتوازنة [AVL] شجرة بحث متعددة الاتجاهات/شجرة B~/شجرة B+ شجرة حمراء سوداء [RBT] مقارنة شجرة البحث الديناميكية
What to read next
Want more posts about ARTS?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home