原创 std::sort函數用法

default (1) template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last

原创 leetcode  旋轉數組

給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。 示例 1: 輸入: [1,2,3,4,5,6,7] 和 k = 3 輸出: [5,6,7,1,2,3,4] 解釋: 向右旋轉 1 步:[7,1,2,3,4,5,6]

原创 leetcode 移動0

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 示例: 輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明: 必須在原數組上操作,不能拷貝額外的數組。 儘量

原创 leetcode 存在重複

給定一個整數數組,判斷是否存在重複元素。 如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。 示例 1: 輸入: [1,2,3,1] 輸出: true 示例 2: 輸入: [1,2,

原创 leetcode 加一

給定一個非負整數組成的非空數組,在該數的基礎上加一,返回一個新的數組。 最高位數字存放在數組的首位, 數組中每個元素只存儲一個數字。 你可以假設除了整數 0 之外,這個整數不會以零開頭。 示例 1: 輸入: [1,2,3] 輸出: [

原创 leetcode 兩個數組的交集 II

給定兩個數組,寫一個方法來計算它們的交集。 例如: 給定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2]. 注意:    輸出結果中每個元素出現的次數,應與元素在兩個數組中出現的次數一致。

原创 Linux 線程-條件變量

#include <cstdio> #include<pthread.h> #include <iostream> #include<unistd.h> #include<string.h> using namespace std;

原创 Linux 讀寫鎖

1.讀寫鎖是幾把鎖 一把鎖 pthread_rwlock_t lock; 2.讀寫鎖的類型 讀鎖 - 對內存做讀操作 寫鎖 - 對內存做寫操作 3.讀寫鎖的特性 線程A加讀鎖成功,又來了三個線程,做讀操作,可以加鎖成功 線程A加

原创 c/c++ 靜態庫與動態庫

鏈接庫 二進制文件 將源碼轉換成二進制格式的源代碼 加密 使用 頭文件 製作出的庫 靜態庫 命名規則:libtest.a lib xxx -庫的名字 .a 製作步驟: 源代碼.c.cpp 將.c文件生成.o gcc a.c b.c

原创 Linux 進程控制(三)

3.exec函數族 1)exec函數族 讓父子進程執行不相干的操作 能夠替換進程地址空間中的源代碼.txt段    #include<unistd.h> #include<sys/types.h> #include<sys/stat.h

原创 Linux 線程-互斥鎖(一)

1.互斥鎖概念:        在編程中,引入了對象互斥鎖的概念,來保證共享數據操作的完整性。每個對象都對應於一個可稱爲" 互斥鎖" 的標記,這個標記用來保證在任一時刻,只能有一個線程訪問該對象。 2.常用函數 互斥鎖參數類型 -- pt

原创 Linux 進程間通信(二)

4.mmap-創建內存映射區 作用:將磁盤文件的數據映射到內存,用戶通過修改內存就能 修改磁盤文件 表頭文件 #include <unistd.h> #include <sys/mman.h> 定義函數 void *mmap

原创 Linux 多線程

1.創建線程 -- pthread 表頭文件  #include <pthread.h> 定義函數 int pthread_create(pthread_t * thread, pthread_attr_t * attr, voi

原创 Linux 進程控制(一)

1.進程相關概念 1)程序和進程 程序:二進制文件,佔用的磁盤空間 進程:啓動的程序 所有的數據都在內存中 需要佔用更多的系統資源 cpu,物理內存 2)並行和併發 計算機操作系統對於併發性和並行性的概念給出的定義是: 並行性是

原创 Linux 進程控制(二)

2.進程控制 1)進程控制 fork     一個進程,包括代碼、數據和分配給進程的資源。fork()函數通過系統調用創建一個與原來進程幾乎完全相同的進程,也就是兩個進程可以做完全相同的事,但如果初始參數或者傳入的變量不同,兩個進程也可以