国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

萬物的算法日記|第一天

這篇具有很好參考價值的文章主要介紹了萬物的算法日記|第一天。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

筆者自述:

一直有一個聲音也一直能聽到身邊的大佬經(jīng)常說,要把算法學(xué)習(xí)搞好,一定要重視平時的算法學(xué)習(xí),雖然每天也在學(xué)算法,但是感覺自己一直在假裝努力表面功夫騙了自己,沒有規(guī)劃好自己的算法學(xué)習(xí)和總結(jié),因為后半年也該找實習(xí)了,所以每日的算法題要進(jìn)行惡補(bǔ),勤能補(bǔ)拙,因此有了這一個算法日記系列;

必讀: 大佬你好,感謝您的閱讀,這篇文章是我的算法筆記,方便我每日回顧;
為了不耽誤您的時間,我把本篇日記的考點方向和算法知識總結(jié)列出來,如果對您有需要要就進(jìn)行閱讀

也希望對您有幫助,和您一起通關(guān)算法!致謝

萬物的算法日記|第一天,萬物的算法日記,算法,數(shù)據(jù)結(jié)構(gòu)

算法語言:java
題目來源:力扣–書本–初級算法,可以在力扣中搜索相關(guān)題名找到更多解法和大神方法
本文知識點:

  1. 隨機(jī)數(shù)
    random.nextInt(j+1) 表示范圍是從0-j
  2. 交換兩個數(shù)的值
    交換兩個數(shù)的值,使用異或操作,^= 效率更高,通過三次的異或操作,可以交換數(shù)組中的兩個值,在不適用額外變量的情況下
  3. 篩選素數(shù)的方法
    埃拉托斯特尼篩法:從2開始,將每個素數(shù)的各個倍數(shù),標(biāo)記為合數(shù),剩下的未標(biāo)記的就是素數(shù)。
  4. 位運(yùn)算
    可以通過位運(yùn)算和0、1相與的操作來判斷該位上是否是1,>>> 表示無符號右位移,并且在最左邊插入零, >> 表示有符號位移,他們兩個的區(qū)別是 >>> 不考慮符號位,這樣可以保證被移動數(shù)的為模式不變,不會因為符號位的擴(kuò)展而改變其值,>>考慮符號位

打亂數(shù)組

萬物的算法日記|第一天,萬物的算法日記,算法,數(shù)據(jù)結(jié)構(gòu)
代碼:

class Solution {
    private int[] nums;
    private Random random;
    public Solution(int[] nums) {
        this.nums = nums;
        random = new Random();
    }
    
    public int[] reset() {
        return nums;
    }
    
    public int[] shuffle() {
        if(nums == null){
            return null;
        }
        int []a = nums.clone();
        for(int j =1;j<a.length;j++){
            int i = random.nextInt(j+1);
            swap(a,i,j);
        }
        return a;
    }
    private void swap(int []a,int i,int j){
        if(i != j){
            a[i] ^= a[j];
            a[j] ^= a[i];
            a[i] ^= a[j];
        }
    }
}

學(xué)到的知識點:

  1. random.nextInt(j+1) 表示范圍是從0-j
  2. 交換兩個數(shù)的值,使用異或操作,^= 效率更高,通過三次的異或操作,可以交換數(shù)組中的兩個值,在不適用額外變量的情況下

計數(shù)質(zhì)數(shù)

萬物的算法日記|第一天,萬物的算法日記,算法,數(shù)據(jù)結(jié)構(gòu)
代碼:

class Solution {
    public int countPrimes(int n){
        boolean[] arr = new boolean[n];
        int cnt = 0;
        //埃拉托斯特尼篩法
        for(int i =2;i<n;i++){
            if(arr[i])
                continue;
            cnt++;
            for(int j =i;j<n;j+=i){
                arr[j] = true;
            }
        }
        return cnt;
    }
}

學(xué)到的知識點:

  1. 篩選素數(shù)的方法:
    埃拉托斯特尼篩法:從2開始,將每個素數(shù)的各個倍數(shù),標(biāo)記為合數(shù),剩下的未標(biāo)記的就是素數(shù)。
代碼模版:
        for(int i =2;i<n;i++){
            if(arr[i])
                continue;
            cnt++;
            for(int j =i;j<n;j+=i){
                arr[j] = true;
            }
        }

位1的個數(shù)

萬物的算法日記|第一天,萬物的算法日記,算法,數(shù)據(jù)結(jié)構(gòu)
代碼:


// 位1 的個數(shù)
public class day6_12_6 {
    //將 n 向右移
    public int hammingWeight(int n ){
        int count =0;
        for(int i =0;i<32;i++){
            if(((n>>>i) &1) == 1){
                count++;
            }
        }
        return count;
    }
    //將 1 向左移
    public int hammingWeight1(int n){
        int count = 0;
        for(int i =0;i<32;i++){
            if((n%(1<<i)) != 0){
                count++;
            }
        }
        return count;
    }
}

學(xué)到的知識點:

  1. 可以通過位運(yùn)算和0、1相與的操作來判斷該位上是否是1,>>> 表示無符號右位移,并且在最左邊插入零, >> 表示有符號位移,他們兩個的區(qū)別是 >>> 不考慮符號位,這樣可以保證被移動數(shù)的為模式不變,不會因為符號位的擴(kuò)展而改變其值,>>考慮符號位

漢明距離

萬物的算法日記|第一天,萬物的算法日記,算法,數(shù)據(jù)結(jié)構(gòu)
代碼:

class Solution {
     public int hammingDistance(int x,int y){
        int xor = x^y;
        int res = 0;
        while(xor != 0){
            res+=xor&1;
            xor = xor>>>1;
        }
        return res;
    }
}

學(xué)到的知識點:

  1. 有兩個數(shù),通過異或操作,在二進(jìn)制表達(dá)式中,如果同一對位數(shù)相同經(jīng)過異或操作就是0,不同就是1,所以之后通過無符號移動和1進(jìn)行與操作就可以得出兩個不同的數(shù)之間的二進(jìn)制距離了、

顛倒二進(jìn)制位

萬物的算法日記|第一天,萬物的算法日記,算法,數(shù)據(jù)結(jié)構(gòu)
代碼:

public class Solution {
    // you need treat n as an unsigned value

    //    res <<= 1;: 這行代碼將 res 左移一位,相當(dāng)于將 res 中的所有位向左移動一個位置。這樣做是為了為下一步的操作騰出一個空位。
//    res += n & 1;: 這行代碼將 n 的最低位(即最右邊的位)與 1 進(jìn)行按位與操作,并將結(jié)果加到 res 中。這樣做是為了將 n 的最低位放置到 res 的對應(yīng)位置。
//    n >>= 1;: 這行代碼將 n 右移一位,將 n 的所有位都向右移動一個位置。這樣做是為了處理 n 的下一位。
//    通過循環(huán)的迭代,每次將 n 的最低位取出,并將其放置到 res 的對應(yīng)位置上,最終完成了整數(shù)的二進(jìn)制反轉(zhuǎn)。
    public int reverseBits(int n){
        int res = 0;
        for(int i =0;i<32;i++){
            res <<=1;
            res+=n&1;
            n>>=1;
        }
        return res;
    }
}

學(xué)到的知識:文章來源地址http://www.zghlxwxcb.cn/news/detail-547000.html

  1. 兩個不同的數(shù) 相加,其實底層是位運(yùn)算的相加,這就不難理解,上述代碼中res+=n&1 這一步操作了

到了這里,關(guān)于萬物的算法日記|第一天的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 萬物的算法日記|第三天

    萬物的算法日記|第三天

    筆者自述: 一直有一個聲音也一直能聽到身邊的大佬經(jīng)常說,要把算法學(xué)習(xí)搞好,一定要重視平時的算法學(xué)習(xí),雖然每天也在學(xué)算法,但是感覺自己一直在假裝努力表面功夫騙了自己,沒有規(guī)劃好自己的算法學(xué)習(xí)和總結(jié),因為后半年也該找實習(xí)了,所以每日的算法題要進(jìn)行惡

    2024年02月09日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)英文習(xí)題解析-第一章 算法復(fù)雜度分析Algorithm Analysis

    前言:最近快到FDS考試了,po重刷了一下學(xué)校的題目,自己整理了一些解析orz 因為po在自己找解析和學(xué)習(xí)的過程中非常痛苦,所以在此共享一下我的題目和自己寫的解題思路,歡迎各位指出錯誤~全章節(jié)預(yù)計會陸續(xù)更新,可在專欄查看~ HW1 1. The major task of algorithm analysis is to an

    2024年03月12日
    瀏覽(87)
  • 第一百零五天學(xué)習(xí)記錄:數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ):順序表(王卓教學(xué)視頻)

    第一百零五天學(xué)習(xí)記錄:數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ):順序表(王卓教學(xué)視頻)

    注:筆記截圖均來自王卓數(shù)據(jù)結(jié)構(gòu)教學(xué)視頻 線性表是具有相同特性的數(shù)據(jù)元素的一個有限序列 同一線性表中的元素必定具有相同特性,數(shù)據(jù)元素間的關(guān)系是線性關(guān)系。 稀疏多項式的運(yùn)算 順序存儲結(jié)構(gòu)存在的問題 1、存儲空間分配不靈活 2、運(yùn)算的空間復(fù)雜度高 引出鏈?zhǔn)酱鎯?/p>

    2024年02月15日
    瀏覽(20)
  • 第一百零六天學(xué)習(xí)記錄:數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ):單鏈表(王卓教學(xué)視頻)

    第一百零六天學(xué)習(xí)記錄:數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ):單鏈表(王卓教學(xué)視頻)

    結(jié)點在存儲器中的位置是任意的,即邏輯上相鄰的數(shù)據(jù)元素在物理上不一定相鄰 線性表的鏈?zhǔn)奖硎居址Q為非順序映像或鏈?zhǔn)接诚瘛?用一組物理位置任意的存儲單元來存放線性表的數(shù)據(jù)元素。 這組存儲單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至是零散分布在內(nèi)存中的任意

    2024年02月16日
    瀏覽(27)
  • 架構(gòu)師日記-從數(shù)據(jù)庫發(fā)展歷程到數(shù)據(jù)結(jié)構(gòu)設(shè)計探析

    架構(gòu)師日記-從數(shù)據(jù)庫發(fā)展歷程到數(shù)據(jù)結(jié)構(gòu)設(shè)計探析

    作者:京東零售 劉慧卿 起初,數(shù)據(jù)的管理方式是文件系統(tǒng),數(shù)據(jù)存儲在文件中,數(shù)據(jù)管理和維護(hù)都由程序員完成。后來發(fā)展出樹形結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)的數(shù)據(jù)庫,但都存在著難以擴(kuò)展和維護(hù)的問題。直到七十年代,關(guān)系數(shù)據(jù)庫理論的提出,以表格形式組織數(shù)據(jù),數(shù)據(jù)之間存在關(guān)

    2024年02月04日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)(初階)第一節(jié):數(shù)據(jù)結(jié)構(gòu)概論

    數(shù)據(jù)結(jié)構(gòu)(初階)第一節(jié):數(shù)據(jù)結(jié)構(gòu)概論

    本篇文章是對數(shù)據(jù)結(jié)構(gòu)概念的 純理論 介紹,希望系統(tǒng)了解數(shù)據(jù)結(jié)構(gòu)概念的友友可以看看,對概念要求不高的友友稍做了解后移步下一節(jié): 數(shù)據(jù)結(jié)構(gòu)(初階)第二節(jié):順序表-CSDN博客 目錄 正文 1.數(shù)據(jù)結(jié)構(gòu)的相關(guān)概念 1.1什么是數(shù)據(jù) 1.2什么是數(shù)據(jù)結(jié)構(gòu) 1.3為什么需要數(shù)據(jù)結(jié)構(gòu) 1

    2024年04月10日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)預(yù)習(xí)筆記第一章-數(shù)據(jù)結(jié)構(gòu)的概念

    數(shù)據(jù)結(jié)構(gòu)預(yù)習(xí)筆記第一章-數(shù)據(jù)結(jié)構(gòu)的概念

    重點理解 數(shù)據(jù)結(jié)構(gòu)的定義 , 邏輯結(jié)構(gòu) , 存儲結(jié)構(gòu) , 算法的時間效率分析和算法的空間效率分析 2.1 什么是數(shù)據(jù)結(jié)構(gòu) 概念?? 數(shù)據(jù) :所有的數(shù)字,字符和能夠被輸入到計算機(jī)中進(jìn)行運(yùn)算的符號的集合。 數(shù)據(jù)元素 :數(shù)據(jù)元素是數(shù)據(jù)的 基本單位 ??,在計算機(jī)中通常是作為

    2024年01月25日
    瀏覽(26)
  • 第一章-數(shù)據(jù)結(jié)構(gòu)緒論

    第一章-數(shù)據(jù)結(jié)構(gòu)緒論

    數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題中的操作對象,以及它們之間的關(guān)系和操作等相關(guān)問題的學(xué)科。 程序設(shè)計的實質(zhì)是選擇一個好的結(jié)構(gòu),再設(shè)計一種好的算法。 數(shù)據(jù):是描述客觀事物的符號,是計算機(jī)中可以操作的對象,是能被計算機(jī)識別,并輸入給計算機(jī)處

    2024年02月13日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)入門篇:第一篇

    數(shù)據(jù)結(jié)構(gòu)入門篇:第一篇

    ??首先,為什么要學(xué)數(shù)據(jù)結(jié)構(gòu)? 數(shù)據(jù)結(jié)構(gòu)的 概念 :在內(nèi)存中對數(shù)據(jù)進(jìn)行管理; 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)能讓我們在處理大量數(shù)據(jù)時提高處理效率,即讓我們在不同的場景下更快的處理大量數(shù)據(jù); ??算法和數(shù)據(jù)結(jié)構(gòu)有什么關(guān)系? 算法 就是處理數(shù)據(jù)的一種方法; 數(shù)據(jù)結(jié)構(gòu)是為算法服

    2023年04月18日
    瀏覽(26)
  • 408數(shù)據(jù)結(jié)構(gòu)第一章

    1.數(shù)據(jù) 數(shù)據(jù)是信息的 載體 計算機(jī)程序 識別和處理 的符號的集合 2.數(shù)據(jù)元素 數(shù)據(jù)的 基本單位 整體 進(jìn)行考慮和處理 若干 數(shù)據(jù)項 組成 數(shù)據(jù)項是構(gòu)成元素的不可分割的 最小單位 3.數(shù)據(jù)對象 具有 相同性質(zhì) 的數(shù)據(jù)元素的集合 4.數(shù)據(jù)類型 原子類型 結(jié)構(gòu)類型 抽象數(shù)據(jù)類型 5.數(shù)據(jù)結(jié)

    2024年02月08日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包