自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 python爬虫-Requests模块

python爬虫-Requests模块

2022-07-20 20:03:35 438

原创 python爬虫基础

爬虫基础知识

2022-07-19 23:57:48 350

原创 算法效率的度量

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、如何衡量一个算法的效率 二、算法效率的度量 1.时间复杂度 2.空间复杂度 总结 前言 一段代码有好有坏,性能各不相同,那么如何来评判一段代码的优劣呢? 一、如何衡量一个算法的效率 任何代码都需要存储,运行,存储需要耗费空间,运行需要时间,实现相同的功能,耗费的空间越少,运行的时间越短,代码质量越高,当然,代码还要兼备可读性,让别人更好...

2022-02-24 19:36:56 619

原创 仅仅反转字母

给定一个字符串s,按规则反转字符串: 1.所有非英文字母保留在原地 2.所有英文字母位置反转 例如: 输入:s = "a-bcd!ef" 输出: s = "f-edc!ba" 思路:两个指针left,right分别指向字符串的头部和尾部,分别检验是否位英文字母,若s[left]不是英文字母,则left++,若s[right]不是英文字母,则right--,分别跳过,若两者都是英文字母,则进行位置交换 char * reverseOnlyLetters(char * s){ int r

2022-02-23 11:40:55 527

原创 二进制间距

给一个正整数n,找到并返回n的二进制表示中两个1之间最长的距离,若只有1个1,则返回0 例如: 输入:8 二进制为1000 输出:0 输入:3 输出:1 int binaryGap(int n){ int last=-1,ans=0; //防止直接赋值 for(int i=0;i<32;i++){ if((n>>i)&1){ //判断是否为1 if(last >=0) ans=(i-last)>=

2022-02-22 19:34:34 289

原创 求多数元素

给定一个长度为numsSize的数组,找到其中的多数元素,多数元素是指在数组中出现次数大于(numsSize/2)的元素(即众数) 例如: 输入:77765557 输出:7 分析:只可能出现一个输出值,不必使用数组,求众数,可以用count计数,遍历数组,遇到相同值则count++,遇到不同值则count--;count为0是重新赋值 /*********摩尔投票算法*********/ //把nums[0]赋给candidatate //遍历数组,相等则count++,不相等则count--

2022-02-21 12:48:01 271

原创 字符串找不同

如果给定两个字符串s和t,它们只包含小写字母,其中,字符串t由字符串s重新排序然后再随机的位置添加一个字母。设计一个算法找出t中被添加的字母。 例如: 输入:s = "a,b,c,d",t="c,b,a,a,d" 输出:"a" 思路:可以结合交换律进行位运算处理,x异或x为0(x^x=0),从而将s,t中重复的元素去除,将找出t中重新添加的字母 char findTheDifference(char * s, char * t){ int len1=strlen(s); //得出字符串s

2022-02-19 23:05:26 469

原创 矩阵中的幸运数

一个m*n的矩阵中的数字各不相同,找出并返回所有的幸运数。 幸运数同时满足两个条件: 1.在同一行是最小的元素 2.在同一列是最大的元素 思路:可以先找出没行的最小值,在判断这个每行的最小值是不是这列的最大值,如果是,则输出,如果不是,则继续遍历。 经证明, /** * Note: The returned array must be malloced, assume caller calls free(). */ int* luckyNumbers (int** matrix, int

2022-02-18 23:39:02 204

原创 比特位计数

给一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中1的个数,返回一个长度为 n+1 的数组 ans 作为答案。 例如: 输入:n=2 输出:[ 0,1,1 ] 00-->0 01-->1 10-->1 输入:n=3 输出:[ 0,1,1,2] 00-->0 01-->1 10-->1 11-->2 分析: m&(m-1)表示去掉二进制表示中最低位的一个1,则去掉几个1就表示原来有几个1,

2022-02-17 15:33:31 212

原创 对位运算的认识

一.对位运算的认识: 1.位运算就是直接对整数在内存中的二进制位进行操作 2.计算机运算单元只认识高低平电位,转化成我们认识的逻辑,也就是0和1,1表示高电平,0表示低电平 3.程序中的所有数在计算机内存中都是以二进制的形式储存的。 二.位运算符 三.常用位操作 1.x&1(判断奇偶性,为0是偶数,为1是奇数) 2.x>>n(等价于x/(2的n次方)) x<<n(等价于x*2的n次方) 3.x&(x-1) 等价于把二进制的最低为的1去掉 ...

2022-02-16 18:19:24 835

原创 有序数组中的单一元素

一个仅由整数组成的有序数组,其中每个元素都会出现两次,只有一个数字只会出现一次,设计一个算法找出这个数字并返回。 例如: 输入:[ 1,1,2,2,3,3,4,5,5 ] 输出:4 输入:[ 3,3,4,4,5,5,6 ] 输出:6 除了一个数字只会出现一次之外,其他每个数字都会出现两次,说明这个有序数组一定包含奇数个数字,并且只会出现一次的数字的下标一定是偶数。并且数组是有序的,可以用二分查找来获取结果。 int singleNonDuplicate(int* nums, int nums

2022-02-15 21:53:23 267

原创 X的平方根

一个非负整数x,计算并返回x的算数平方根。 结果将小数部分舍去,只保留整数部分并输出。 例如: 输入:x=4 输出:2 输入:x=8 输出2 思路:利用二分查找不断缩小范围直到找到最终的值并输出 int mySqrt(int x){ int right=x; int left=0; int ans=0; while(left<=right){ int mid=left+(right-left)/2; //二分查找

2022-02-14 21:34:51 141

原创 数组中的非负整数加一

给一个由整数组成的数组表示非负整数,在该数的基础上加一,并且每个数组的元素只存储单个数字,除整数0之外,这个整数不会以0开头。 例如: 输入:digits=[ 1,1,9 ] 输出:[ 1,2,0 ] 输入:digits=[ 9,9 ] 输出:[ 1,0,0 ] 思路:分三种情况 1.末尾不是9 ,,,直接末尾加一,返回数组 2.末尾是9 ,,,末尾归零,向前遍历,找出不是9的元素,进行加一操作,返回数组 3.所有元素都是9,,,重新分配数组的空间(原来空间的基础上加一个整形变量的空间),

2022-02-13 17:51:03 440

原创 爬N阶楼梯

正在爬楼梯,需要 n 阶才能到达楼顶。每次你可以爬 1 或 2 个台阶,有多少种不同的方法可以爬到楼顶? 例如: 输入 n = 3 输出 n = 3 有三种方法可以爬到楼顶: 1阶 +1阶 +1 阶; 1阶 + 2阶 2阶 + 1阶 思路: 一阶楼梯只有一种方法 二阶楼梯有两种方法 三阶楼梯有三种方法 四阶楼梯有五种方法 因第N个台阶只能从第N-1和N-2个台阶走上去m,N阶楼梯有N-1阶楼梯的方法加N-2阶楼梯的方法。 int climbStairs(int n){ .

2022-02-12 15:24:37 341

原创 判断是否为丑数

一个整数 n ,判断 n 是否为丑数。如果是,返回 true ;否则,返回 false 。 丑数就是只包含质因数2、3或5的正整数。 思路: 小于等于0的数一定不是丑数,返回false 若 n是丑数,则 nn 可以写成 n = 2^a * 3^b * 5^c的形式,a,b,c都为非负数,当a,b,c都为0是n=1。 对 nn 反复除以 2,3,5直到 nn 不再包含质因数 2,3,5。如果剩下的数为1,则说明n为丑数,返回true,否则不是丑数,返回false bool isUgly(...

2022-02-11 17:25:29 2590

原创 两数之和的下标

给定一个整数数组nums和一个整数目标值target在该数组中找出和为target 的那 两个整数,并返回它们的索引值。 假设每种输入只会对应一个答案,数组中同一个元素在答案里不能重复出现。 例如: 输入nums=[ 1,2,3,5,7 ],target=8 输出[ 2,3 ] int* twoSum(int* nums, int numsSize, int target, int* returnSize){ int left=0,right=1; int *ans=(i...

2022-02-10 19:34:08 780

原创 删除排序数组中的重复项

一个有序数组 nums ,原地删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度即可。 要求:不使用额外的数组空间,必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。 例如: 输入:[ 0,0,1,1,2,2,2,3,3 ] 输出:4 即[ 0,1,2,3 ] 思路:数组的手段始终保持不变,从第二项开始,若索引值前后的数值相等,则继续遍历数组,若不相等,则将从索引值=1连续赋值来达到目的。 此题用了快慢指针的思想。快指针判断前后数值是否相等,不相等的话赋值给慢指

2022-02-09 21:01:07 600

原创 最大连续1的个数

给定一个二进制数组 nums (nums不是1就是0), 计算其中最大连续 1 的个数。 例如: 输入:nums=[ 1,1,0,1,1,1 ] 输出:3 首端两位和末尾三位都是连续1,所以最大连续1的个数为3 思路: 定义一个变量count,遍历数组,如果当前元素为1,则m自增1,如果当前元素为0,用count的较大值替换count的较小值,并且使count归零,重新计数。遍历结束后,因为末尾的元素可能不为0,如果不更新count的值,可能会造成结果错误,如nums=[ 1,1,0,1,1,1

2022-02-08 16:52:14 680

原创 反转字符串

编写一个函数,将输入的字符串反转过来,,输入字符串以字符数组 s 的形式给出,原地修改数组。 例如 输入:s = [ "a","b","c","d","e","f" ] 输出:s = [ "f","e","d","c","b","a" ] 思路:分别将两个指针分别指向数组的开头及末尾,然后将其指向的元素进行交换,再将指针向中间移动一步,继续交换,直到这两个指针相遇。 void change(char *left,char*right){ char a=*left; *left=*

2022-02-07 19:59:12 7023

原创 翻转字符串中的单词

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 说明: 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。 例如: 输入:s = "my name is xiao qi" 输出:"qi xiao is name my" 输入:s = " hello world " 输出:"world hello...

2022-02-07 12:10:24 806

原创 strlen与sizeof的区别

1.含义不同 sizeof()是一个单目运算符,也是关键词之一,使用的话,不需要引用头文件 strlen()是一个函数,使用的话需要引用头文件-#include "string.h" 2.sizeof可以用于做参数,它的参数可以是数组、指针、类型、对象、函数等,与初始化有一定的关系,而strlen则只能用char做参数,而且有限制,与初始化无关,这也是两者的区别所在。 3.计算时间不同 sizeof在编译时就能计算,而strlen只能在运算时才能计算. 4. strlen()函数求的是字符串

2022-02-07 09:33:14 1707

原创 最长公共前缀

查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。 例如: 输入:strs = ["hello world","hello qq","hel weixin hello"] 输出:"hello" 输入:strs = ["cat","people","elephant"] 输出:"" 字符串中不存在公共前缀 思路:先判断是否为空字符串,若为空字符串,则返回' ',纵向遍历字符串数组,用当前字符的值与第一行字符的值比较,若不相等,用'/0'替换,'/0'为字符串的结束标志,代表

2022-02-04 17:13:43 200

原创 对角线遍历

一个大小为m x n的矩阵mat,以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 例如: 设纵坐标与横坐标相加=n 可知:n为偶数时,向右上遍历; n为奇数时,向左下遍历。 代码实现: int* findDiagonalOrder(int** mat, int matSize, int* matColSize, int* returnSize){ *returnSize=matSize*(*matColSize); //matSize为行数,*matColS...

2022-02-04 13:16:40 672

原创 10个数字比大小(冒泡排序)

#include <stdio.h> void fun(int a[]); void fun(int a[]) { int i,j,k; for(i=0;i<9;i++) { for(j=0;j<9;j++) { if(a[j]>a[j+1]) { k = a[j]; a[j] = a[j+1]; a[j+1]=k; } } } } int main(void) { int a[10]; printf("请输入.

2022-02-03 22:31:22 611

转载 若M × N矩阵中某个元素为0,则将其所在的行与列清零

将矩阵中的元素进行一次遍历,将为0的元素进行标记并记录,再将矩阵中的元素进行一次遍历,将标记的元素更新矩阵中的元素 void setZeroes(int** matrix, int matrixSize, int* matrixColSize){ int row[matrixSize]; int column[matrixColSize[0]]; memset(row, 0, sizeof(row)); memset(column, 0, sizeof(column

2022-02-02 19:04:50 626

原创 C语言打印9*9乘法口诀表

#include "stdio.h" int main() { for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ printf("%d*%d=%d\t",i,j,i*j); } printf("\n"); } }

2022-02-02 18:52:35 435

原创 C库函数-memset();

头文件 #include<string.h> 作用:将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。 memset()函数的声明 void *memset(void *str, int c, size_t n) 函数解释:将s中当前位置后面的n个字节用 c 替换并返回 str 用法如下 #include <stdio.h> #include <string.h> int main () { char str[0]

2022-02-01 17:52:40 437

转载 二维数组——旋转矩阵

一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节,将图像逆时针旋转 90 度。 给定 matrix = [ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,12,16] ], 使其变为 matrix = [ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11] ] 来源:力扣(LeetCode) 链接:https://leetc...

2022-02-01 16:49:30 863

原创 搜索插入位置

给定一个排序数组(升序)和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 方法一 暴力解法,简单易懂,数值较少时采用。 思路:目标值<=排序数组时。返回当前索引值;目标值》排序数组时,返回数组长度。 int searchInsert(int* nums, int numsSize, int target){ for(int i=0;i<numsSize;i++) { if(nums[i]>=t

2022-01-30 12:29:36 931

原创 寻找数组的中心下标

思路:数组左侧求和*2+中间索引值=总和 实例 int pivotIndex(int* nums, int numsSize) { int total=0; int sum=0; for(int i=0;i<numsSize;i++) { total+=nums[i]; } for(int i=0;i<numsSize;i++) { if((sum<<1)+nums[i]==total)re

2022-01-29 18:09:53 439

原创 动态内存分配——malloc函数的用法

C99之前 malloc函数的用处:申请一块内存空间 包含于头文件:#include <stdlib.h> malloc函数申请的空间大小以字节为单位 void* malloc(n * sizeof(size)); 返回结果为void*,用强制类型转换成需要的类型,如下,转换为字符型: char* malloc(n * sizeof(char)); 使用free();函数,释放malloc函数申请的内存空间,有借有还,再借不难 代码示例,作用(顺序反转) #include

2022-01-28 17:04:41 1822

原创 解决Keil输入中文注释显示乱码的问题

解决Keil输入中文注释显示乱码的问题,

2022-01-16 18:38:02 1929

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除