自定义博客皮肤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 276 1

原创 python爬虫基础

爬虫基础知识

2022-07-19 23:57:48 259

原创 算法效率的度量

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

2022-02-24 19:36:56 514

原创 仅仅反转字母

给定一个字符串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 422

原创 二进制间距

给一个正整数n,找到并返回n的二进制表示中两个1之间最长的距离,若只有1个1,则返回0例如:输入:8 二进制为1000输出:0输入:3输出:1int 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 187

原创 求多数元素

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

2022-02-21 12:48:01 187

原创 字符串找不同

如果给定两个字符串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 360

原创 矩阵中的幸运数

一个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 131

原创 比特位计数

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

2022-02-17 15:33:31 130

原创 对位运算的认识

一.对位运算的认识: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 665

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

一个仅由整数组成的有序数组,其中每个元素都会出现两次,只有一个数字只会出现一次,设计一个算法找出这个数字并返回。例如:输入:[ 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 190

原创 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 65

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

给一个由整数组成的数组表示非负整数,在该数的基础上加一,并且每个数组的元素只存储单个数字,除整数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 374

原创 爬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 261

原创 判断是否为丑数

一个整数 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,否则不是丑数,返回falsebool isUgly(...

2022-02-11 17:25:29 2356

原创 两数之和的下标

给定一个整数数组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 709

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

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

2022-02-09 21:01:07 478

原创 最大连续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 568

原创 反转字符串

编写一个函数,将输入的字符串反转过来,,输入字符串以字符数组 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 6843

原创 翻转字符串中的单词

单词 是由非空格字符组成的字符串。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 734

原创 strlen与sizeof的区别

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

2022-02-07 09:33:14 1519

原创 最长公共前缀

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

2022-02-04 17:13:43 150

原创 对角线遍历

一个大小为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 560

原创 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 534

转载 若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 491

原创 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 385

原创 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 382

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

一幅由 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 630

原创 搜索插入位置

给定一个排序数组(升序)和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。方法一暴力解法,简单易懂,数值较少时采用。思路:目标值<=排序数组时。返回当前索引值;目标值》排序数组时,返回数组长度。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 875

原创 寻找数组的中心下标

思路:数组左侧求和*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 392

原创 动态内存分配——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 1680

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

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

2022-01-16 18:38:02 1685

空空如也

空空如也

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

TA关注的人

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