SENI #006
SENI #006
SENI adalah kegiatan yang diprakarsai oleh
由左耳朵耗子--陈皓: Kerjakan setidaknya satu pertanyaan algoritma leetcode setiap minggu, baca dan komentari setidaknya satu artikel teknis berbahasa Inggris, pelajari setidaknya satu keterampilan teknis, dan bagikan artikel yang berisi opini dan pemikiran. (Artinya, Algoritma, Review, Tip, dan Share disebut sebagai SENI) dan bertahan setidaknya selama satu tahun.
SENI 006
Ini adalah artikel ke-6. Tulisannya relatif buruk. Saya berharap ini akan menjadi lebih baik dan lebih baik lagi di masa depan.
Pertanyaan algoritma algoritma
Soal algoritma Leetcode 41 First Missing Positive (bilangan positif pertama yang hilang): Kesulitan: Sulit
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),并且只能使用常数级别的空间。
Ide pemecahan masalah: Sesuai dengan persyaratan pertanyaan, kita perlu mencari bilangan bulat positif terkecil. Jadi untuk array tertentu, nilai minimum dari nilai yang dikembalikan adalah 1. Berapa nilai maksimumnya? Nilai maksimum harus berupa jumlah elemen dalam array ditambah 1. Jika Anda bisa memikirkan hal ini, masalahnya akan terpecahkan.
Implementasi saya adalah sebagai berikut:
//第一次一次通过的代码 而且运行时间是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;
}
Dua solusi berikut adalah kode yang dikirimkan oleh orang lain. Anda bisa belajar dari ide orang lain.
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);
}
Solusi berikut ini disarikan dari 刘新宇的算法新解一书 yang lebih hemat tempat (untuk ide spesifik bisa Google solusi algoritma baru Liu Xinyu, ada e-book)
#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;
}
Ulasan
Artikel ini berasal dari: https://medium.freecodecamp.org/why-developers-should-know-how-to-write-dc35aa9b71ab <tengah> <ukuran huruf=6> Mengapa pengembang harus tahu cara menulis </font> </pusat> Baru-baru ini saya menemukan artikel oleh John Maeda tentang bagaimana menulis — bukan coding — adalah keterampilan unicorn dalam desain. Hal itu membuat saya berpikir tentang bagaimana menulis berperan dalam kehidupan pengembang. Baru-baru ini saya melihat artikel oleh John Maeda tentang bagaimana menulis - bukan coding - adalah puncak dari desain. Hal ini membuat saya berpikir tentang peran menulis dalam kehidupan seorang pengembang.
Di dunia yang berbasis data dan sarat data saat ini, ada begitu banyak konten yang dapat dikonsumsi. Kami terus-menerus dibombardir oleh video, gambar, iklan, podcast, dan artikel. Masing-masing media ini mempunyai daya tarik yang berbeda-beda, dan sepertinya selalu ada persaingan yang kuat untuk mencoba menarik dan mempertahankan perhatian kita.
Di dunia yang berbasis data dan padat data saat ini, ada begitu banyak konten yang dapat dikonsumsi. Kami terus-menerus dibombardir dengan video, gambar, iklan, podcast, dan artikel. Masing-masing media ini mempunyai daya tarik yang berbeda-beda, dan sepertinya selalu ada persaingan ketat yang berusaha menarik dan mempertahankan perhatian kita.
Contoh berbagai jenis saluran media yang tersedia (gambar dari Change Conversations).
Dengan berkembangnya berbagai saluran media dalam beberapa dekade terakhir, penekanan pada konten tertulis berkurang dan lebih banyak pada konten visual – khususnya video dan gambar. Menurut memo 3M tahun 1997 ini, orang dapat memproses visual 60.000 kali lebih cepat daripada teks. Selama beberapa dekade terakhir, seiring dengan berkembangnya berbagai saluran media, penekanan pada konten tekstual berkurang dan lebih banyak perhatian pada visual—khususnya video dan gambar. Menurut memo tahun 1997 dari 3M, orang memproses gambar 60.000 kali lebih cepat daripada teks.
Namun, mengetahui cara menulis tetap merupakan keterampilan yang penting. Kata-kata dapat menjadi salah satu bentuk paling murni untuk mengungkapkan pikiran seseorang. Kata-kata dapat disajikan sebagai surat, artikel, atau pesan teks. Seorang penulis akan menyebarkan dan membagikan pemikirannya dalam bentuk tinta di atas kertas atau piksel digital di layar. Namun, mengetahui cara menulis tetap merupakan keterampilan yang penting. Bahasa adalah salah satu bentuk paling murni di mana seseorang dapat mengekspresikan pikirannya. Bahasa dapat dinyatakan sebagai surat, artikel atau pesan teks. Penulis berkomunikasi dan membagikan idenya melalui tinta di atas kertas atau piksel digital di layar.
Saya telah belajar bahwa menulis dengan baik dapat menjadi katalisator kesuksesan, baik dalam bidang pertumbuhan pribadi, pengembangan profesional, atau kesejahteraan sosial. Banyak keterampilan yang saya kembangkan dari menulis lusinan artikel dalam beberapa tahun terakhir telah diterjemahkan ke dalam peran penuh waktu saya yang baru sebagai insinyur perangkat lunak di Putnam Investments.
Saya belajar bahwa tulisan yang baik dapat menjadi katalisator kesuksesan, baik itu pertumbuhan pribadi, pengembangan profesional, atau kesejahteraan sosial. Selama beberapa tahun terakhir, banyak keterampilan yang saya peroleh dari menulis lusinan artikel telah diterjemahkan ke dalam peran penuh waktu saya yang baru sebagai insinyur perangkat lunak di Putnam Investments.
Foto oleh Aaron Burden di Unsplash.
Sebagai seorang pengembang, berikut lima manfaat yang saya peroleh dengan belajar menulis. Sebagai seorang pengembang, berikut lima manfaat yang saya peroleh dari belajar menulis.
1. Menulis dengan baik membuat Anda menjadi komunikator yang lebih baik (menulis dengan baik dapat membuat Anda menjadi komunikator yang lebih baik)
Manfaat paling nyata yang saya sadari dari seringnya menulis adalah bahwa menulis dengan baik telah membuat saya menjadi komunikator yang lebih baik. Sebagai manusia, kita terutama mengandalkan kata-kata untuk menyampaikan pikiran dan perasaan kita kepada orang lain. Dengan sering menulis, saya dapat mengungkapkan pikiran saya dengan lebih mudah, tanpa harus khawatir apakah saya menggunakan kata-kata yang tepat, menulis terlalu banyak atau terlalu sedikit, atau terlalu kabur atau berbelit-belit. Manfaat paling nyata yang saya sadari dari seringnya menulis adalah bahwa tulisan yang baik membuat saya menjadi komunikator yang lebih baik. Sebagai manusia, kita terutama mengandalkan kata-kata untuk menyampaikan pikiran dan perasaan kita kepada orang lain. Dengan menulis secara teratur, saya dapat mengungkapkan ide-ide saya dengan lebih mudah tanpa harus khawatir apakah saya menggunakan kata-kata yang tepat, menulis terlalu banyak atau terlalu sedikit, atau menjadi terlalu kabur atau rumit.
Gambar dari https://zalarieunique.ru.
Di tempat kerja, saya dapat membuat draf email ringkas atau mengirim pesan instan tanpa harus menggunakan kamus untuk mengetahui ejaan kata atau tesaurus yang benar agar saya terdengar lebih pintar. Ketika pikiran dapat mengalir dengan bebas dari pikiran ke tangan Anda, maka kata-kata yang terucap di atas kertas mengalir dengan lancar dan tidak perlu dimanipulasi untuk mencapai tujuan tertentu. Di tempat kerja, saya dapat membuat draf email ringkas atau mengirim pesan instan tanpa harus menggunakan kamus atau tesaurus agar terdengar cerdas. Ketika ide dapat mengalir dengan bebas dari kepala hingga ke tangan, maka kata-kata di atas kertas mengalir dengan lancar tanpa harus dimanipulasi untuk mencapai tujuan tertentu.Menulis, seperti banyak kerajinan lainnya, membutuhkan latihan bertahun-tahun untuk diasah. Bagian terbaik dari penulisan ini adalah peningkatannya dapat dideteksi. Anda dapat melihat karya-karya sebelumnya dan melihat peningkatan yang terlihat dari waktu ke waktu. Menulis, seperti banyak kerajinan lainnya, membutuhkan latihan bertahun-tahun untuk diasah. Bagian terbaik tentang menulis adalah kemajuannya terlihat. Anda dapat melihat pekerjaan sebelumnya dan melihat peningkatan nyata dari waktu ke waktu.
2. Menulis untuk audiens membantu Anda menulis dokumentasi yang lebih baik (Menulis untuk audiens dapat membantu Anda menulis dokumentasi yang lebih baik)
Salah satu kriteria untuk menjadi pengembang yang baik adalah mengetahui cara mengkomunikasikan persyaratan dan spesifikasi teknis kepada pemangku kepentingan lainnya. Mengetahui audiens Anda adalah bagian penting dalam menulis — hal yang sama berlaku saat berkomunikasi dengan pemangku kepentingan atau menulis dokumentasi jenis apa pun.
Bagian dari menjadi pengembang yang baik adalah mengetahui cara mengomunikasikan persyaratan dan spesifikasi teknis kepada pemangku kepentingan lainnya. Mengetahui audiens Anda adalah bagian penting dalam menulis—dan hal yang sama berlaku untuk berkomunikasi dengan pemangku kepentingan atau menulis dokumentasi apa pun.
Saat bekerja dengan anggota tim yang kurang teknis, Anda harus menjelaskan istilah dan konsep teknis dengan cara yang masuk akal dan sesuai dengan siapa pun yang bekerja dengan Anda. Misalnya, ketika bekerja dengan pemilik produk dan desainer, saya biasanya mencoba memberikan gambaran umum tingkat tinggi tentang apa pun yang saya kerjakan tanpa terjebak (terjebak) dalam detailnya. Untuk desainer, saya mencoba mengkomunikasikan bagaimana fitur tersebut harus diimplementasikan dari perspektif UX atau UI. Untuk pemilik produk, saya mencoba membingkai pekerjaan saya dari perspektif bisnis.
Saat bekerja dengan anggota tim yang kurang teknis, Anda harus menjelaskan istilah dan konsep teknis dengan cara yang masuk akal dan sesuai dengan siapa pun yang bekerja dengan Anda. Misalnya, ketika bekerja dengan pemilik produk dan desainer, saya biasanya memberikan ikhtisar tingkat tinggi tentang apa yang saya lakukan tanpa terpaku pada detailnya. Untuk desainer, saya mencoba mengilustrasikan bagaimana fitur tersebut harus diimplementasikan dari sudut pandang pengalaman pengguna atau UI. Untuk pemilik produk, saya mencoba mengatur pekerjaan saya dari sudut pandang bisnis.
Selain itu, pengembang juga harus mengkomunikasikan karyanya kepada pengembang lain. Baik itu penamaan variabel atau nama fungsi, menulis komentar sebaris, atau mendokumentasikan cara kerja sistem dari tingkat tinggi, pengembang perlu mengetahui cara menulis dokumentasi yang baik agar kode dapat dimengerti dan dipelihara. Setiap kali saya menulis dokumentasi, saya berusaha membuatnya selengkap mungkin. Pengembang mana pun yang mengerjakan basis kode saya akan dapat memahami struktur tingkat tinggi, dan juga dapat berkontribusi secara instan (segera/segera) tanpa harus mendekonstruksi dan merekayasa balik kode tersebut.
Selain itu, pengembang harus mengomunikasikan pekerjaan mereka dengan pengembang lain. Baik memberi nama variabel atau fungsi, menulis komentar sebaris, atau mendokumentasikan cara kerja sistem dari tingkat tinggi, pengembang perlu mengetahui cara menulis dokumentasi yang baik agar kode mudah dipahami dan dipelihara. Setiap kali saya menulis dokumen, saya berusaha membuatnya selengkap mungkin. Pengembang mana pun yang mengerjakan basis kode saya memahami struktur tingkat tinggi dan dapat segera berkontribusi tanpa harus mendekonstruksi dan merekayasa balik kode tersebut.
3. Menulis membuat Anda menghargai keistimewaan pemrograman
Pada tahun 2011, seorang Redditor memposting di subreddit /r/programming tentang perbedaan dan persamaan antara menulis dan pemrograman. Ada yang mengatakan bahwa pemrograman mirip dengan menulis, yaitu keterampilan yang tidak sulit secara konseptual, namun merupakan sesuatu yang disempurnakan seiring berjalannya waktu. Yang lain menyatakan bahwa menulis sama sekali berbeda dengan pemrograman karena menulis adalah upaya kreatif, sedangkan pemrograman adalah ilmu yang lebih mendalam yang memerlukan pemahaman lebih dalam tentang konsep dasar.
Pada tahun 2011, seorang pengguna reddit memposting di /r/programming tentang persamaan dan perbedaan antara menulis dan pemrograman. Beberapa orang mengatakan bahwa pemrograman mirip dengan menulis karena merupakan keterampilan yang tidak sulit secara konseptual tetapi menjadi semakin disempurnakan seiring berjalannya waktu. Yang lain percaya bahwa menulis dan pemrograman sangat berbeda karena menulis adalah upaya kreatif sedangkan pemrograman adalah ilmu yang lebih kompleks yang memerlukan pemahaman konsep dasar yang lebih dalam.
Konsensus umum, dengan sedikit perbedaan pendapat dalam perbedaan masing-masingnya, adalah bahwa penulisan dan pemrograman memerlukan pengetahuan dasar tentang dasar-dasar — sintaksis, struktur, dan semantik. Namun yang membedakan seorang amatir dengan seorang veteran (berpengalaman; veteran/veteran/veteran) di setiap bidang adalah kemampuannya untuk berkreasi dan menghadapi kompleksitas sistem atau topik yang ada.
Konsensus umum, dengan sedikit perbedaan pendapat pada setiap detailnya, adalah bahwa menulis dan pemrograman memerlukan pengetahuan dasar dasar - sintaksis, struktur, dan semantik. Namun, di setiap bidang, yang membedakan amatir dan veteran adalah kemampuan kreatif mereka dalam menangani kompleksitas sistem atau topik yang ada.
Banyak dari ide-ide ini yang menyentuh (menyentuh melibatkan; menyentuh; berbicara tentang) bidang linguistik dan bahasa.
Banyak dari perspektif ini berhubungan dengan bidang linguistik dan bahasa.Menulis mengajarkan pengembang untuk berpikir secara berbeda. Bagi pengembang, menulis kode mungkin terasa terbatas karena terbatasnya jumlah kata kunci, fungsi, dan pustaka yang dapat digunakan. Namun, bahasa tertulis memberikan kebebasan penuh dalam berekspresi dengan cara yang biasanya tidak diperbolehkan oleh bahasa pemrograman.
Menulis mengajarkan pengembang untuk berpikir secara berbeda. Bagi pengembang, penulisan kode dapat menjadi kendala karena terbatasnya jumlah kata kunci, fungsi, dan pustaka yang dapat digunakan. Namun, bahasa tertulis memungkinkan kebebasan berekspresi sepenuhnya yang umumnya tidak diperbolehkan oleh bahasa pemrograman.
Ted Kaminski mengemukakan poin menarik lainnya seputar tujuan kata saat kita menggunakannya dalam kode dan media lain. Ted Kaminski mengemukakan hal menarik lainnya mengenai cara kita menggunakan kata-kata dalam kode dan media lainnya.
“For one, writing is meant(意味着) to be read. Code is meant to be read and changed.” -Ted Kaminski
“首先,写作是为了阅读。 代码应该被阅读和更改。“ - 泰德卡明斯基
Dalam ranah kepenulisan, nampaknya dikotomi ketat telah tercipta dari waktu ke waktu untuk memisahkan kepentingan penulis dan pembaca. Menulis tampaknya kaku, sedangkan kode adalah upaya berkelanjutan yang berupaya memperbaiki (berdasarkan; mendekati; pada) yang lama.
Di bidang kepenulisan, nampaknya telah tercipta dikotomi ketat dari waktu ke waktu, yang memisahkan kepentingan penulis dan pembaca. Menulis terkesan statis (diam), sedangkan coding adalah upaya berkelanjutan untuk menyempurnakan sesuatu yang lama.
Dalam banyak hal, menulis “kreatif” dan menulis kode memiliki banyak kesamaan, namun mengetahui perbedaannya membuat saya lebih menghargai keduanya.
Dalam banyak hal, menulis “kreatif” dan menulis kode memiliki banyak kesamaan, namun memahami perbedaannya membuat saya lebih menghargai keduanya.
4. Menulis memberi Anda kesempatan untuk menerapkan apa yang Anda pelajari (menulis memberi Anda kesempatan untuk menerapkan apa yang Anda pelajari)
Saat saya menulis, saya selalu merasa seperti sedang mengobrol dengan diri saya sendiri. Setelah menyelesaikan sebuah buku atau menemukan sesuatu yang penting, saya mencoba membiarkan pikiran saya merenung dengan menulis artikel tentang apa yang telah saya pelajari. Bagi saya, saya telah menemukan cara terbaik untuk memajukan pengetahuan saya dalam bidang tertentu (khusus; terperinci; unik; pilih-pilih) adalah dengan menulis tentang topik tersebut.
Saat saya menulis, saya selalu merasa seperti sedang mengobrol dengan diri saya sendiri. Ketika saya selesai membaca buku atau menemukan sesuatu yang penting, saya mencoba memusatkan pikiran saya dengan menulis esai tentang apa yang saya pelajari. Bagi saya, menurut saya cara terbaik untuk meningkatkan pengetahuan saya di bidang tertentu adalah dengan menulis tentang subjek tersebut.
Di freeCodeCamp dan banyak situs web lain yang menyediakan tutorial pengembangan dasar, penulis menulis tentang berbagai topik dan konsep berbeda. Salah satu alasan mengapa begitu banyak sukarelawan meluangkan waktu untuk menulis artikel bukan hanya agar mereka dapat berbagi pengalaman dan membantu orang lain, namun juga agar mereka dapat memperkuat pengetahuan yang telah mereka pelajari tentang topik yang mereka tulis.
Di freeCodeCamp dan banyak situs web lain yang menyediakan tutorial pengembangan dasar, penulis menulis tentang berbagai topik dan konsep berbeda. Salah satu alasan mengapa banyak relawan mencurahkan waktunya untuk menulis artikel adalah karena mereka tidak hanya dapat berbagi pengalaman dan membantu orang lain, namun mereka juga dapat meningkatkan pengetahuan mereka tentang topik yang mereka tulis.
freeCodeCamp, salah satu sumber terbaik untuk tutorial dan artikel pengembangan.
freeCodeCamp, salah satu sumber terbaik untuk tutorial dan artikel pengembangan.
Ketika saya menulis tentang topik yang saya pelajari, saya biasanya melakukan (melakukan; memimpin vt. manajemen; bimbingan; kinerja n. perilaku; perilaku; implementasi) penelitian tambahan (tambahan, tambahan) (penelitian; investigasi) yang sering kali mengakibatkan saya menemukan potongan (fragmen) informasi yang sebelumnya tidak akan saya ketahui. perspektif dan sudut pandang yang menantang pandangan awal saya. Seluruh proses penulisan adalah percakapan yang hidup dan berkelanjutan yang memungkinkan saya memproses informasi yang saya temukan dan membuat penilaian sendiri.
Ketika saya menulis tentang suatu topik yang saya ketahui, saya sering melakukan penelitian tambahan, yang sering kali memaparkan saya pada potongan informasi yang biasanya tidak saya ketahui. Ketika saya menulis, saya lebih cenderung mengingat apa yang telah saya pelajari. Selain itu, saya terkadang menghadapi persepsi dan sudut pandang berbeda yang menantang pandangan awal saya. Seluruh proses penulisan adalah percakapan yang hidup dan berkelanjutan yang memungkinkan saya memproses informasi yang saya temui dan membuat penilaian sendiri.
Menulis adalah cara terbaik untuk mengatur dan mengumpulkan pemikiran Anda (Foto oleh Radu Florin di Unsplash).
Menulis adalah cara yang bagus untuk mencerna dan memproses informasi yang kita terima. Namun, pengetahuan dan kecerdasan tidak berasal dari kuantitas informasi yang kita terima, namun dari kemampuan kita memproses informasi tersebut dan menarik kesimpulan yang bermakna darinya.
Menulis adalah cara yang bagus untuk mencerna dan mengolah informasi yang kita miliki. Namun, pengetahuan dan kecerdasan muncul bukan dari banyaknya informasi yang kita terima, namun dari kemampuan kita memproses informasi tersebut dan menarik kesimpulan yang bermakna darinya.
Menulis adalah cara yang bagus untuk mencerna dan memproses informasi. Namun, pengetahuan dan kecerdasan tidak datang dari banyaknya informasi yang kita serap, melainkan dari kemampuan kita memproses informasi tersebut dan menarik kesimpulan yang bermakna darinya.#### 5. Menulis sebagai bentuk katarsis(Menulis adalah salah satu bentuk katarsis/Menulis adalah salah satu bentuk katarsis) Alasan terakhir mengapa menurut saya menulis itu penting mungkin tidak relevan secara langsung dengan peran pengembang seperti empat alasan terakhir. Namun menurut saya ini sama pentingnya, atau bahkan lebih penting. Sebagian besar alasan mengapa saya memilih untuk menulis adalah karena menulis adalah penyaluran emosi dan perasaan saya. Saya tidak suka memendam perasaan dan pikiran saya, jadi saya mencari menulis sebagai bentuk katarsis. Alasan terakhir menurut saya menulis itu penting mungkin tidak berhubungan langsung dengan peran pengembang karena empat alasan terakhir. Namun menurut saya itu juga penting, bahkan lebih penting. Sebagian besar alasan mengapa saya memilih untuk menulis adalah karena menulis adalah penyaluran emosi dan perasaan saya yang penting. Saya tidak suka memendam perasaan dan pikiran saya, jadi saya menggunakan menulis sebagai bentuk katarsis. Alasan terakhir menurut saya menulis itu penting mungkin tidak terkait langsung dengan peran pengembang seperti empat alasan terakhir. Namun menurut saya ini sama pentingnya, bahkan lebih penting. Sebagian besar alasan saya memilih untuk menulis adalah karena menulis adalah saluran yang bagus bagi saya untuk mengekspresikan emosi dan perasaan saya. Saya tidak suka memendam perasaan dan pikiran saya, jadi saya mencari menulis sebagai bentuk katarsis.
Ketika saya masih muda, saya biasa menulis entri jurnal di buku harian. Sekarang saya menulis tentang berbagai topik dan mempublikasikannya agar dunia dapat membaca. Namun sesekali, saya akan kembali menggunakan pena dan kertas untuk mengungkapkan pemikiran pribadi saya. Saya membuat jurnal pribadi yang kadang-kadang saya tulis ketika saya memiliki keraguan tentang tujuan profesional saya, kehidupan pribadi, hubungan sosial, dan segala sesuatu di antaranya. Ketika saya masih muda, saya biasa menulis entri jurnal di jurnal. Sekarang saya menulis tentang banyak topik dan menerbitkannya agar dunia dapat membacanya. Namun dari waktu ke waktu saya menggunakan pena dan kertas untuk mengungkapkan pemikiran pribadi saya. Saya kadang-kadang menulis jurnal pribadi ketika saya meragukan tujuan karir saya, kehidupan pribadi, hubungan sosial, dan segala sesuatu di antaranya. Ketika saya masih muda, saya sering membuat buku harian. Sekarang, saya menulis tentang berbagai topik dan menerbitkannya agar dunia dapat membaca. Namun sesekali, saya kembali menggunakan pena dan kertas untuk mengungkapkan pemikiran pribadi saya. Saya membuat jurnal pribadi yang kadang-kadang saya tulis ketika saya memiliki pertanyaan tentang tujuan profesional saya, kehidupan pribadi, hubungan sosial, dan segala sesuatu di antaranya.
<ukuran huruf=6> Tidak ada yang perlu ditulis. Yang Anda lakukan hanyalah duduk di depan mesin tik dan berdarah. </font> Tidak ada yang perlu ditulis di rumah. Yang harus Anda lakukan hanyalah duduk di depan mesin tik dan berdarah. Menulis bukanlah apa-apa. Yang Anda lakukan hanyalah duduk di depan mesin tik dan berdarah.
Ketika saya menulis tentang perasaan saya, rasanya seperti saya sedang berbicara dengan seorang teman yang sangat pandai mendengarkan. Ini adalah cara bagi saya untuk menghilangkan emosi negatif dan berbicara pada halaman kosong tanpa takut dihakimi. Ketika saya menulis tentang perasaan saya, rasanya seperti saya sedang berbicara dengan seorang teman yang merupakan pendengar yang baik. Ini adalah cara bagi saya untuk menjernihkan pikiran saya dari hal-hal negatif dan berbicara pada halaman kosong tanpa takut dihakimi. Ketika saya menulis tentang perasaan saya, rasanya seperti saya sedang berbicara dengan seorang teman yang mendengarkan dengan baik. Bagi saya, ini adalah cara melepaskan emosi negatif dan berbicara tanpa rasa takut dihakimi.
Menulis memiliki banyak manfaat, dan meskipun ini mungkin bukan cara yang Anda sukai untuk mengekspresikan pikiran Anda, menulis adalah keterampilan yang dibutuhkan dan berguna bahkan di dunia yang hiruk pikuk dan kacau saat ini. Bahkan jika Anda seorang pemula dalam dunia menulis, saya sarankan Anda mencoba duduk sendiri dengan pikiran Anda dan biarkan pikiran Anda mengalir dengan bebas. Sungguh menakjubkan apa yang bisa Anda hasilkan. Ada banyak manfaat menulis, dan meskipun ini mungkin bukan pilihan pertama Anda untuk mengekspresikan pikiran Anda, menulis adalah keterampilan yang diperlukan dan berguna bahkan di dunia yang bising dan kacau saat ini. Sekalipun Anda seorang pemula dalam dunia menulis, saya sarankan Anda memikirkan pikiran Anda sendiri dan membiarkan pikiran Anda mengalir dengan bebas. Apa yang dapat Anda pikirkan sungguh menakjubkan. Menulis memiliki banyak manfaat, dan meskipun mungkin bukan pilihan pertama Anda untuk mengekspresikan pikiran, menulis adalah keterampilan yang diperlukan dan berguna, bahkan di dunia yang bising dan membingungkan saat ini. Bahkan jika Anda baru dalam menulis, saya sarankan Anda mencoba duduk sendiri dengan pikiran Anda dan membiarkan pikiran Anda mengalir dengan bebas. Sungguh menakjubkan apa yang bisa Anda hasilkan.
. . .
Terima kasih telah meluangkan waktu untuk membaca artikel saya! Terima kasih telah meluangkan waktu untuk membaca artikel saya!
Jika Anda menyukai artikel ini, berikan tepuk tangan, ikuti saya di Medium, dan rekomendasikan artikel ini ke teman Anda. Jangan ragu untuk mengikuti saya di Instagram atau terhubung dengan saya di LinkedIn! Jika Anda menyukai artikel ini, silakan bertepuk tangan, ikuti instruksi saya, dan rekomendasikan artikel ini ke teman Anda. Jangan ragu untuk mengikuti saya di Instagram atau terhubung dengan saya di LinkedIn!
Derek Mei http://www.derekmei.com
TIPS:
Cara mendownload gambar berukuran besar
Kami biasanya menggunakan SDWebImage untuk mendownload gambar. SDWebImage mengunduh gambar langsung ke memori dan menggunakannya langsung untuk ditampilkan. Namun, jika gambar berukuran sangat besar, mendownloadnya langsung menggunakan SDWebImage kemungkinan besar akan menyebabkan peningkatan memori secara tiba-tiba dan menyebabkan crash. Bagaimana cara mengatasi masalah ini? Apple secara resmi memiliki contoh memuat gambar lokal berukuran besar (https://developer.apple.com/library/archive/samplecode/LargeImageDownsizing/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011173-Intro-DontLinkElementID_2),参照这个例子,我们可以先把图片下载到本地,然后再用苹果的例子进行加载图片,下载图片到本地可以用AFNetWorking,把图片先下载到本地。
Bagikan:
Cara mempelajari struktur data dengan baik:
Berikut beberapa pendapat orang lain untuk dijadikan referensi:
https://www.zhihu.com/question/19830721/answer/205887662
数据结构的那些排序算法总是记不住,这个真的背的吗?
https://www.zhihu.com/question/51337272/answer/438910111
背下来吧,就背`快排`和`堆排`就行,`归并排序`不用背,但最好背下来怎么合并两个有序链表。这三个(其实是两个半)背下来,可以很多变化,比如说快排可以变换成找top k或者中位数的selection算法。堆排背下来就搞懂了二叉堆,堆可以做N多涉及优先级队列的算法,最短路也用得到。这些搞下来,你就熟悉了数组,链表,堆,二叉树,然后你会发现二叉树可以放在数组里,也可以像链表那样连着。图也是可以用数组和链表来表达成邻接表,然后你会发现Hash表也是类似的结构。到此为止,你只需要背这两个半的排序,本科时代的数据结构与算法你就基本学通了。。。。
Berikut beberapa ringkasan penyortiran:
理解的基础上归下类,记下每种特点就行了,还是挺直观的。下面就以常用的六个排序算法(升序)为例说下特点。
三种`n^2`的:冒泡,选择和插入。
冒泡:目的,每次排好最后一个。方式,从第一个开始查看相邻俩,不合适(前面的大)就交换,这样最后一个一定是最大的。然后,数组元素减一(最后一个排好了扔了吧),缩小规模再来一次。
选择:每次从待选数组中拎出一个最大的来,放到最后,然后缩小规模再来一次。
插入:假设后面的序列是有序的,每次从剩余数组中拎出最后一个,插入到有序数组中合适位置。然后剩余数组缩小规模再插一次。
三种nlgn的:快排,归并和堆排。
快排:每次随便选一个,把它整合适了(放到最终有序数组正确位置),然后比他小的扔左边,比他大的扔右边。然后除掉该数字外的左右子数组各自缩小规模再来一次。
归并:随便找个位置,砍成两半。这两半各自缩小规模了吧,然后假设他们自己来了好多次排好了。最后合并这俩有序数组就行。
堆排:这个比较有意思,核心要实现一个堆化函数。这个函数什么意思呢,就是假设一个大顶堆只有根元素不合法,左右子树都合法(符合堆性质),然后把堆顶元素一路往下搞,跟冒泡差不多,使整个树满足堆的性质。然后呢,把整个数组搞成符合堆的性质(自底而上,从第一个有孩子的元素一直调用堆化函数搞到根元素),把第一个(堆顶,即最大元素)和最后一个交换。如此一来,规模缩小一个,再来一次(堆化&交换)。其他还有shell排啦,桶排啦。不急,消化了这六个再说。
即便你看了算法的证明,某种程度上还是“背”(为什么这么说,后面会详述)。我自己遇到新算法基本是会看证明的,但是发现没多久还是会忘掉,这是死记硬背的标准症状。如果你也啃过算法书,我相信很大可能性你会有同感:为什么当时明明懂了,但没多久就忘掉了呢?为什么当时明明非常理解其证明,但没过多久想要自己去证明时却发现怎么都没法补上证明中缺失的一环呢?(http://mindhacks.cn/2011/07/10/the-importance-of-knowing-why-part3/)
Pendapat saya: Saat mempelajari algoritme dan struktur data, jika fondasinya relatif buruk, Anda dapat menuliskan terlebih dahulu struktur data dari beberapa algoritme dasar, lalu Anda harus dapat mengimplementasikan sendiri algoritme dasar dan struktur data tersebut. Setelah benar-benar memahami hal-hal dasar tersebut, selanjutnya Anda dapat mengerjakan soal-soal yang lebih sulit, karena penyelesaian soal-soal yang lebih sulit akan menggunakan hal-hal yang mendasar. Jangan mengambil pertanyaan sulit sejak awal. Itu tidak ada artinya. Hal ini tidak hanya akan merusak kepercayaan diri Anda, tetapi Anda juga tidak akan dapat memahami banyak solusinya. Yang harus Anda lakukan adalah memahami algoritma dasar dan struktur data. Jika Anda sudah familiar dengannya, setidaknya Anda bisa mengimplementasikannya dalam kode. Ini tidak hanya berarti bahwa Anda merasa memahaminya. Ada kesenjangan besar antara pemahaman dan implementasi. Hanya ketika Anda menerapkannya sendiri Anda dapat merasakan detail dan esensinya.
Yang terbaik adalah memahami penyortiran dan pencarian sebagai berikut: Penyortiran yang umum digunakan: semacam penyisipan semacam seleksi menggabungkan semacam semacam gelembung Sortir tumpukan Penyortiran cepat jenis penghitungan Sortir Radix semacam ember
Temukan struktur: Pohon Pencarian Biner [BST] Pohon Pencarian Biner Seimbang [AVL] Pohon pencarian multi-arah/pohon B~/pohon B+ pohon merah hitam [RBT] Perbandingan pohon pencarian dinamis
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