第一周周日總結

題目總結

1.給你一個整數數組?hours,表示以?小時?為單位的時間,返回一個整數,表示滿足?i < j?且?hours[i] + hours[j]?構成?整天?的下標對?i,?j?的數目。

整天?定義為時間持續時間是 24 小時的?整數倍?

例如,1 天是 24 小時,2 天是 48 小時,3 天是 72 小時,以此類推。

示例 1:

輸入:?hours = [12,12,30,24,24]

輸出:?2

解釋:

構成整天的下標對分別是?(0, 1)?和?(3, 4)

class Solution {

public:

? ? long long countCompleteDayPairs(vector<int> &hours) {

? ? ? ? long long ans = 0;

? ? ? ? int cnt[24]{};

? ? ? ? for (int t : hours) {

? ? ? ? ? ? // 先查詢 cnt,再更新 cnt,因為題目要求 i<j

? ? ? ? ? ? // 如果先更新,再查詢,就把 i=j 的情況也考慮進去了

? ? ? ? ? ? ans += cnt[(24 - t % 24) % 24];

? ? ? ? ? ? cnt[t % 24]++;

? ? ? ? }

? ? ? ? return ans;

? ? }

};
使用范圍基于的for循環 (for (int t : hours)) 遍歷 hours 數組中的每個元素 t。
在每次迭代中,首先計算 (24 - t % 24) % 24 來找到與當前小時數 t 相加能構成整天的那個小時數且位于當前小時數t之前(注意這里使用了兩次取模運算,第一次是為了確保 t 在0到23之間,第二次是為了處理 t 本身為24的倍數的情況)。
然后,將 cnt[(24 - t % 24) % 24] 的值加到 ans 上。這里 cnt[(24 - t % 24) % 24] 表示在遍歷到當前元素 t 之前,已經遍歷過的小時數中與 t 相加能構成整天的那些小時數出現的次數。
最后,更新 cnt[t % 24] 的值,表示當前小時數 t 出現的次數加1。這里再次使用取模運算來確保小時數在0到23之間。
2.

給你一個二進制數組?nums?。

你可以對數組執行以下操作?任意?次(也可以 0 次):

  • 選擇數組中?任意連續?3 個元素,并將它們?全部反轉?。

反轉?一個元素指的是將它的值從 0 變 1 ,或者從 1 變 0 。

請你返回將?nums?中所有元素變為 1 的?最少?操作次數。如果無法全部變成 1 ,返回 -1 。

示例 1:

輸入:nums = [0,1,1,1,0,0]

輸出:3

解釋:
我們可以執行以下操作:

  • 選擇下標為 0 ,1 和 2 的元素并反轉,得到?nums = [1,0,0,1,0,0]?。
  • 選擇下標為 1 ,2 和 3 的元素并反轉,得到?nums = [1,1,1,0,0,0]?。
  • 選擇下標為 3 ,4 和 5 的元素并反轉,得到?nums = [1,1,1,1,1,1]

    class Solution {

    public:

    ? ? int minOperations(vector<int>& nums) {

    ? ? ? ? int n = nums.size();

    ? ? ? ? int ans = 0;

    ? ? ? ? for (int i = 0; i + 2 < n; i++) {

    ? ? ? ? ? ? if (nums[i] == 0) {

    ? ? ? ? ? ? ? ? for (int j = 0; j < 3; j++)

    ? ? ? ? ? ? ? ? {

    ? ? ? ? ? ? ? ? ? ? if(nums[i+j]==0)

    ? ? ? ? ? ? ? ? ? ? nums[i + j] = 1;

    ? ? ? ? ? ? ? ? ? ? else

    ? ? ? ? ? ? ? ? ? ? nums[i+j]=0;

    ? ? ? ? ? ? ? ? }

    ? ? ? ? ? ? ? ? ans++;

    ? ? ? ? ? ? }

    ? ? ? ? }

    ? ? ? ? if (nums[n - 2] && nums[n - 1]) return ans;

    ? ? ? ? return -1;

    ? ? }

    };
    采用枚舉法,題目表示必須三個數進行改變,即如果最后nums[n-1]和nums[n-2]個數為1,則不能進行變換,所以單獨拿出來分析。
    3.

    給你一個二維?二進制?數組?grid。請你找出一個邊在水平方向和豎直方向上、面積?最小?的矩形,并且滿足?grid?中所有的 1 都在矩形的內部。

    返回這個矩形可能的?最小?面積。

    示例 1:

    輸入:?grid = [[0,1,0],[1,0,1]]

    輸出:?6

    解釋:

    這個最小矩形的高度為 2,寬度為 3,因此面積為?2 * 3 = 6
    ?

    class Solution {

    public:

    ? ? int minimumArea(vector<vector<int>>& grid) {

    ? ? ? ? int h=0;

    ? ? ? ? int minh=1000;

    ? ? ? ? int l=0;

    ? ? ? ? int minl=1000;

    ? ? ? ? for(int i=0;i<grid.size();i++)

    ? ? ? ? {

    ? ? ? ? ? ? for(int j=0;j<grid[i].size();j++)

    ? ? ? ? ? ? {

    ? ? ? ? ? ? ? ? if(grid[i][j])

    ? ? ? ? ? ? ? ? {

    ? ? ? ? ? ? ? ? ? ? minh=min(minh,i);

    ? ? ? ? ? ? ? ? ? ? h=max(h,i);

    ? ? ? ? ? ? ? ? ? ? l=max(l,j);

    ? ? ? ? ? ? ? ? ? ? minl=min(minl,j);

    ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ? ? ? ? }

    ? ? ? ? ? ? }

    ? ? ? ? }

    ? ? ? ? return (h-minh+1)*(l-minl+1);

    ? ? }

    };
    枚舉法,取包含1的最大行和最大列,包含1的最小行和最小列。


  • java總結
    ?

    繼承

    對于兩個類中大量重復的代碼,我們可以將這些代碼放在另外一個類中,需要時再進行調用。java 的繼承通過 extends關鍵字來實現,實現繼承的類被稱為子類, 被繼承的類被稱為父類 。 父類和子類的關系 , 是一種一般和特殊的關系 。 例如水果和蘋果的關系 , 蘋果繼承了水果,蘋果是水果的子類,則蘋果是一種特殊的水果 。 因為子類是一種特殊的父類 , 因此父類包含的范圍總 比子類包含的范圍要大, 所以可以認為父類是大類, 而子類是小類 。

    定義

    Java 里子類繼承父類的語法格式如下

     修飾符 class 子類 extends 父類 {}

    :從上面語法格式來看, 定義子類的語法非常簡單 , 只需在原來的類定義上增加 extends 父類。

    public class Fruit
    {
    public double weight;
    public void info(){  
    System.out.println( " 我是一個水果! 重"+ weight + "g!");
    }
    }
    

    接下來定義fruit的子類Apple

    public class Apple extends Fruit
    { 
    public static void main(String[] args) 
    {
    Apple a = new Apple() ; 
    a.weight = 56; 
    a.info() ; }
    }

    上面的 Apple 類基本只是一個空類,它只包含了一個 mainO方法,但程序中創建了 Apple 對象之后, 可以訪問該 Apple 對象的 weight 實例變量和 info()方法,這表明 Apple 對象也具有了 weight 實例變量和 info()方法,這就是繼承的作用 。

    繼承的特點

    Java 語言摒棄了 C++ 中難以理解的多繼承特征,即每個類最多只有一個直接父類,但支持多層繼承 。因為如果繼承的多個父類中有相同的方法,子類就無法確定繼承哪個方法。

    如果定義一個 Java類時并未顯式指定這個類的直接父類,則這個類默認父類為Objec 類 。

    重寫父類的方法

    子類擴展了父類,子類是一個特殊的父類。 大部分時候,子類總是以父類為基礎 ,額外增加新的成員變量和方法。

    但有一種情況例外 : 子類需要重寫父類的方法。

    例如鳥類都包含了飛翔方法, 其中駝鳥是一種特殊的鳥類,因此駝烏應該是鳥的子類,因此它也將從烏類獲得飛翔方法,但這個飛翔方法明顯不適合駝鳥,為此,駝鳥需要重寫鳥類的方法。

    下面程序先定義了 一個Bird類

    public class Bird 
    {
    // Bird 類的 fly() 方法
    public void fly() 
    {
    System.out.println(" 我在天空里自由自在地飛翔. .. ");
    }
    }

    再定義了一個Buird的子類

    public class Ostrich extends Bird
    {
    //重寫 Bird 類的 fly ()方法
    public void fly()
    { 
    System.out.println(" 我只能在地上奔跑 . . . ") ;
    }
    public static void main(String[] args)
    {
    Ostrich os = new Ostrich( ); 
    //執行 Ostrich對象的 fly ()方法,將輸出"我只能在地上奔跑.. . 
    os.fly ();
    }
    }

    執行上面程序,將看到執行os.fly()時執行的不再是 Bird 類的方法,而是執行Ostrich 類的時方法。

    這種子類包含與父類同名方法的現象被稱為方法重寫, 也被稱為方法覆蓋。可以說子類重寫了父類的方法, 也可以說子類覆蓋了父類的方法。

    方法的重寫要遵循 " 兩同兩小一大"規則,

    " 兩同"即方法名相同 、 形參列表相同 ;

    " 兩小"指的是 子類方法返回值類型應比父類方法返回值類型更小或相等 , 子類方法聲明拋出的異常類應比父類方法聲明拋出的異常類更小或相等;

    " 一大 "指的是子類方法的訪問權限應比父類方法的訪問權限更大或相等。

    需要在子類方法中調用父類中被覆蓋的方法,則可以使用 super或者父類類名作為調用者來調用父類中被覆蓋的方法 。

    如果父類方法具 private訪問權限,則該方法對其子類是隱藏的,因此其子類無法訪問該方法, 也就是無法重寫該方法 。

    如果子類中定義了 一個與父類 private 方法具有相同的方法名 、 相同的形參列表相同的返回值類型的方法,依然不是重寫 , 只是在子類中重新定義了一個新方法.

    調用父類的構造器

    由于構造方法要與類名一致,所以子類不能繼承父類的構造方法。

    但子類的構造器可以調用父類構造器的初始化代碼。

    在一個構造器中調用另一個重載的構造器使用this調用來完成,

    在子類構造器中調用父類構造器使用super調用來完成。

    看下面程序定義了Base類和 Sub類,其中Sub類是 Base 類的子類,

    class Base
    {
    public double size; 
    public String name; 
    public Base(double size , String name) 
    {
    this . size = size ; 
    this . name = name;
    }
    }
    public class Sub extends Base
    {
    public String color; 
    public Sub(double size , String name , String color) 
    {
    super(size , name) ; 
    this.color = color; 
    }
    public static void main(String[] args)
    {
    Sub s = new Sub(5.6 , "測試對象","紅色" ) ; 
    System.out.println(s.size + "--" + s.name+"--"+s.color);
    }
    }

    子類的構造方法會先訪問父類的無參構造,以防需要父類中數據進行初始化

    成員變量

    對與父類中的成員變量,子類中是可以進行調用,并賦值。但如果父類中的成員變量被private修飾則不能進行操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41556.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# MathNet

Vector使用 Build.Dense 創建列向量:列向量轉行向量&#xff08;行矩陣&#xff09;:使用 DenseOfArray 方法:使用 PointwiseMultiply 進行向量元素級乘法:計算向量的點積&#xff08;內積&#xff09;&#xff1a;訪問向量的特定元素&#xff1a;遍歷向量中的所有元素&#xf…

公眾號文章閱讀20w+?你猜騰訊給了我多少錢?

前兩天寫的一篇文章&#xff0c; 《1000T的文件怎么能快速從南京傳到北京&#xff1f;最佳方案你肯定想不到》 一不小心被平臺推薦&#xff0c;閱讀量居然達到了20w&#xff08;這篇收益在文章底部&#xff01;&#xff09;。 留言也是相當精彩 說來慚愧&#xff0c;這篇文章我…

【74LS163做24進制計數器】2021-11-19

緣由用74LS163做24進制計數器-其他-CSDN問答,仿真multisim兩個74LS163芯片如何構成47進制計數器-吐槽問答-CSDN問答 參考74ls163中文資料匯總&#xff08;74ls163引腳圖及功能_內部結構圖及應用電路&#xff09; - 電子發燒友網

蒼穹外賣 ...待更新

蒼穹外賣 1、 阿里云OSS2、菜品分類查詢 1、 阿里云OSS 工具類 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

深入理解Qt智能指針

目錄 1.引言 2.共享數據 2.1.特點 2.2.QSharedData 2.3.隱式共享 2.4.顯示共享 3.共享指針 3.1.QSharedPointer 3.2.QWeakPointer 4.范圍指針 4.1.QScopedPointer 4.2.QScopedArrayPointer 5.追蹤特定QObject對象生命 6.總結 1.引言 在 Qt 中&#xff0c;智能指針…

計算樣本之間的相似度

文章目錄 前言一、距離度量1.1 歐幾里得距離&#xff08;Euclidean Distance&#xff09;1.2 曼哈頓距離&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距離&#xff08;Chebyshev Distance&#xff09;1.4 閔可夫斯基距離&#xff08;Minkowski Distance&#xff09…

docker容器技術、k8s的原理和常見命令、用k8s部署應用步驟

容器技術 容器借鑒了集裝箱的概念&#xff0c;集裝箱解決了什么問題呢&#xff1f;無論形狀各異的貨物&#xff0c;都可以裝入集裝箱&#xff0c;集裝箱與集裝箱之間不會互相影響。由于集裝箱是標準化的&#xff0c;就可以把集裝箱整齊擺放起來&#xff0c;裝在一艘大船把他們…

瀏覽器插件利器-allWebPluginV2.0.0.14-stable版發布

allWebPlugin簡介 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件產品&#xff0c;致力于將瀏覽器插件重新應用到所有瀏覽器。它將現有ActiveX插件直接嵌入瀏覽器&#xff0c;實現插件加載、界面顯示、接口調用、事件回調等。支持谷歌、火狐等瀏…

Spring Boot+Blockchain:區塊鏈入門Demo

1. 引言 區塊鏈技術近年來迅速發展&#xff0c;其去中心化、不可篡改和透明性等特點吸引了眾多開發者和企業的關注。為了便于理解和應用區塊鏈技術&#xff0c;本文將介紹如何使用Spring Boot集成區塊鏈&#xff0c;構建一個簡單的區塊鏈Demo。 2. 項目準備 2.1 環境要求 在…

MYSQL安裝及環境配置

1.數據庫下載 1.1 瀏覽器下載相應版本&#xff0c;如果相應版本不在此頁&#xff0c;可點擊Archives &#xff0c;然后選擇相應版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目錄&#xff0c;并將其解壓 2.配置數據庫環境變量 2.1 使用電腦win鍵 Q &#xff0c;…

在C++中使用的錯誤處理策略

在C中&#xff0c;錯誤處理是一個重要且復雜的主題&#xff0c;因為它要求開發者在設計和編碼時考慮到程序可能遇到的各種異常情況。C提供了幾種不同的機制來處理錯誤&#xff0c;每種機制都有其適用的場景和優缺點。下面我將概述幾種常見的C錯誤處理策略&#xff1a; 1. 返回…

SQL的時間格式和文本靈活轉換

日期的格式&#xff0c;在日常的數據分析中&#xff0c;常常使用 特別是在按照日、月、年進行匯總分析&#xff0c;使用起來&#xff0c;往往會有差異 如果格式比較復雜&#xff0c;可以考慮進行文本轉化的處理 這里有比較推薦的函數&#xff1a; 1.CONVERT()函數 適用于SQL …

51單片機STC89C52RC——16.1 五項四線步進電機

目的/效果 讓步進電機 正向轉90度&#xff0c;逆向轉90度 一&#xff0c;STC單片機模塊 二&#xff0c;步進電機 2.2 什么是步進電機&#xff1f; 步進電機可以理解為&#xff1a;是一個按照固定步幅運動的“小型機器”。它與普通電機不同點在于&#xff0c;普通電機可以持…

CompletionService

必備知識&#xff1a; 三種創建線程的方式 java線程池 CompletionService是Java并發庫中的一個接口&#xff0c;用于簡化處理一組異步任務的執行和結果收集。它結合了Executor和BlockingQueue的功能&#xff0c;幫助管理任務的提交和完成。CompletionService的主要實現類是Exe…

前端必修技能:高手進階核心知識分享 - CSS 陰影屬性詳解

CSS 涉及設計到陰影的相關內容包括三個方面&#xff1a;box-shadow屬性&#xff08;盒子陰影&#xff09;、 text-shadow屬性&#xff08;文本陰影&#xff09;、drop-shadow濾鏡。 本篇文章旨在詳細介紹和分析三種陰影的具體參數設置和典型用例。 box-shadow屬性&#xff08;…

預防臨床預測模型中可能的“算法歧視”

預防臨床預測模型中可能的“算法歧視” 概要&#xff1a;如果訓練數據中存在性別方面的不均衡&#xff0c;會讓訓練出的模型存在性別方面的“算法歧視”&#xff0c;進而導致某種性別下存在更多的誤診誤治&#xff0c;最終造成醫療資源分配的不公平的倫理問題&#xff0c;導致模…

04.C1W3.Vector Space Models

往期文章請點這里 目錄 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

STM32-SPI和W25Q64

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. SPI&#xff08;串行外設接口&#xff09;通信1.1 SPI通信簡介1.2 硬件電路1.3 移位示意圖1.4 SPI時序基本單元1.5 SPI時序1.5.1 發送指令1.5.2 指定地址寫1.5.3 指定地址讀 2. W25Q642.1 W25Q64簡介2.2 硬件電路2…

嵌入式C語言面試相關知識——內存管理(不定期更新)

嵌入式C語言面試相關知識——內存管理&#xff08;不定期更新&#xff09; 一、博客聲明二、自問題目1、嵌入式系統的內存布局是怎么樣的&#xff1f;2、動態內存分配在嵌入式系統中的使用有什么注意事項&#xff1f;3、什么是內存碎片&#xff0c;如何減少內存碎片&#xff1f…

win11自動刪除文件的問題,安全中心提示

win11自動刪除文件的問題&#xff0c;解決方法&#xff1a; 1.點擊任務欄上的開始圖標&#xff0c;在顯示的應用中&#xff0c;點擊打開設置。 或者點擊電腦右下角的開始也可以 2.點擊設置。也可以按Wini打開設置窗口。 3.左側點擊隱私和安全性&#xff0c;右側點擊Windows安全…