02.指针的进阶1.练习题

news2024/11/25 14:47:50

1.辨析

//数组指针是一种指针,指向数组的指针

//数组指针是指向数组地址的指针

//回调函数是调用函数指针指向函数

EG1:杨氏矩阵

有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。

要求:时间复杂度小于O(N);//最坏的情况遍历几次

int find_k(int arr[3][3], int *px, int *py, int k)//既能接受,又可以进行改变
{
	int x = 0;
	int y = *py - 1;
	while (x<=*px-1 && y>=0)
	{
		if (arr[x][y] < k)
		{
			x++;
		}
		else if (arr[x][y] > k)
		{
			y--;
		}
		else
		{
			*px = x;
			*py = y;
			return 1;
		}
	}
	return 0;
}
int main()
{
	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int k = 7;//查找的值
	int x = 3;
	int y = 3;
	int ret = find_k(arr, &x, &y, k);
	if (ret == 0)
		printf("找不到\n");
	else
		printf("找到了,下标是:%d %d", x, y);


	return 0;
}

//从右上角开始找,比较大小,去掉一行或一列11

EG2:字符串左旋

实现一个函数,可以左旋字符串中的k个字符。

例如:

ABCD左旋一个字符得到BCDA

ABCD左旋两个字符得到CDAB

#include <string.h>

void left_move(char arr[], int k)
{
	int i = 0;
	int len = strlen(arr);
	k %= len;
	for (i = 0; i < k; i++)
	{
		//旋转1个字符
		//1
		char tmp = arr[0];
		//2
		int j = 0;
		for (j = 0; j < len - 1; j++)
		{
			arr[j] = arr[j + 1];
		}
		//3
		arr[len - 1] = tmp;
	}
}

法二:

void reverse(char* left, char* right)
{
	assert(left);
	assert(right);
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void left_move(char arr[], int k)
{
	int len = strlen(arr);
	k %= len;
	//逆序左
	reverse(arr, arr + k - 1);
	//逆序右
	reverse(arr + k, arr + len - 1);
	//逆序整体
	reverse(arr, arr + len - 1);
}


int main()
{
	char arr[] = "abcdef";
	int k = 8;
	left_move(arr, k);
	printf("%s\n", arr);
	return 0;
}

EG3:字符串旋转结果

法一:遍历

int is_left_move(char arr1[], char arr2[])
{
	int len1 = strlen(arr1);
	int len2 = strlen(arr2);
	if (len1 != len2)
		return 0;
	int i = 0;
	for (i = 0; i < len1; i++)
	{
		left_move(arr1, 1);
		if (strcmp(arr1, arr2) == 0)
		{
			return 1;
		}
	}

	return 0;
}

法二:ABCD

追加一份:ABCD

//需要用到strcat函数

 

#include <string.h>


int is_left_move(char arr1[], char arr2[])
{
	int len1 = strlen(arr1);
	int len2 = strlen(arr2);
	if (len1 != len2)
		return 0;
	strncat(arr1, arr1, len1);
	if (strstr(arr1, arr2) != NULL)
		return 1;
	else
		return 0;
}


//AABCDAABCD


int main()
{
	char arr1[20] = "AABCD";
	char arr2[] = "ABCDA";
	int ret = is_left_move(arr1, arr2);
	if (ret == 1)
	{
		printf("YES\n");
	}
	else
	{
		printf("NO\n");
	}
	return 0;
}

//strstr

//是在arr1字符串中查找arr2是否存在

// 如果存在则返回arr2在arr1中的地址

//如果不存在返回NULL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务间通讯负载均衡以及日志

2.通信 HTTP ResthttpJSONRPC远程过程调用二进制 1.使用 RestTemplate RestTemplate restTemplate new RestTemplate(); String forObject restTemplate.getForObject("http://localhot:8888/user", String.class);其负载均衡有问题其无法实现健康检查 2.使用Ri…

新年新气象,跨境电商助推出口再创新高

受疫情等多方面影响&#xff0c;2022年纯棉纱进口量及产量均出现一定幅度地下滑。由于库存增加&#xff0c;消费量下降&#xff0c;供需矛盾也不断加剧。 新年新气象&#xff0c;2023年据预计纯棉纱产量将小幅回升&#xff0c;初步预计将达到535万吨&#xff0c;同比增加5.6%。…

Allegro如何快速打开和关闭层面操作指导

Allegro如何快速打开和关闭层面操作指导 在做PCB设计的时候,打开和关闭某个层面是非常频繁的操作,尤其是丝印等等层面。 Allgeo升级到了172版本的时候,可以将常用的层面添加到Visibility菜单里,就不需要频繁打开颜色管理器打卡和关闭层面了,如下图 具体操作如下 打开颜色…

归纳一下软件测试中「安全测试工具」

大家好啊&#xff0c;我是大田。今天归纳一下安全测试工具&#xff0c;分别用这些工具做哪些工作。自动化测试人员、功能测试人员平常可能用的不多&#xff0c;但是面试时也需要准备&#xff0c;需要知道安全测试工具有什么&#xff0c;还要关注现在有哪些漏洞。本篇先归纳整理…

vue3学习笔记之样式穿透(:deep)及CSS 新特性(:soltted、:gloabl、v-bind、mouldCSS)

文章目录1. scoped的原理2. :deep()3. :slotted()4. :global()5. 动态css&#xff08;v-bind&#xff09;6. css module1. scoped的原理 vue中的 scoped 通过在DOM结构以及css样式上加唯一不重复的标记:data-v-hash的方式&#xff0c;以保证唯一&#xff08;而这个工作是由过P…

如何使用极狐GitLab 机器人大幅提升研发效率

本文来自&#xff1a; 黄松 极狐GitLab 后端工程师 研发效率对互联网/科技类公司来说至关重要&#xff0c;效率高意味着你能用更低的人力、时间成本在市场试错&#xff0c;成功的概率也会更大。 而说到研发效率的常见阻碍&#xff0c;主要有两点&#xff1a; 1. 研发流程中需要…

基础二分查找总结

前言 由于我在学习二分查找的过程中处于会了忘&#xff0c;忘了复习的状态&#xff0c;因此总结一套适合自己记忆的模板。建议先看参考资料[1,2,3]^{[1,2,3]}[1,2,3]&#xff0c;理解二分查找各种细节的由来。 二分查找又死循环了&#xff1f;【基础算法精讲 04】手把手带你撕出…

9656教程总结

9656 世界机器人大会青少年电子信息智能创新大赛官网少儿编程办学经验介绍机器人体验展馆体系课程知乎加盟介绍 知识点汇总 年龄 4-6岁 韩纳机器人主题体验馆 赛事 WRC世界机器人大赛, NOC全国中小学信息技术创新和实践大赛 5岁前:乐高积木,孩子年龄小只需对科特、编程…

事关网站数据安全,你真的了解https与SSL证书之间的关系吗?

虽然根据网上的建站教程&#xff0c;大多数站长都知道要给域名添加一个SSL证书&#xff0c;以此来开启https进而可以获得更好的用户体验以及提高网站的安全性。但是SSL证书为什么能使得网站https&#xff1f;你真的去细究过两者之间的关系吗&#xff1f;本文就来说说https与SSL…

python模拟三颗恒星的运动

文章目录随机三体三星问题随机三体 目前来说我们并不关心真实的物理对象&#xff0c;而只想看一下三个随机的点放在三个随机的位置&#xff0c;赋予三个随机的速度&#xff0c;那么这三个点会怎么走。所以其初始化过程为 import numpy as np m,x,y,u,v [np.random.rand(3) f…

【java入门系列四】java基础-数组

学习记录&#x1f914;数组引出动态初始化数组内的数据会自动转换类型注意事项数组赋值机制数组拷贝数组扩容append&#xff1f;多维数组trick生成随机数Math.random()讨论总结谢谢点赞交流&#xff01;(❁◡❁)更多代码&#xff1a; Gitee主页&#xff1a;https://gitee.com/G…

如何进行复盘

复盘定义 复盘&#xff0c;原本是围棋术语&#xff0c;指下完一盘棋后&#xff0c;双方棋手把对弈过程重新摆一遍&#xff0c;看哪里下得好&#xff0c;哪里下得不好&#xff0c;哪些关键节点有不同甚至更好的下法&#xff0c;以检查对局中招法的优劣与得失&#xff0c;并从中…

深入理解可变参数列表

目录 1.前言 2.基本使用方法 1.引入 2.相关宏介绍 3.原理剖析 1.传参 2.va_list 3.va_start() 4.va_arg() 5.va_end() 4.注意事项 5.总结 1.前言 在C语言中&#xff0c;对于一般的函数而言&#xff0c;参数列表都是固定的&#xff0c;而且各个参数之间用逗号进行分开。而除…

面试,演讲为什么一说话就紧张? 的底层解读

信息存在损耗在说话中,说话者与接受者之间传递信息存在损耗。而且人表达情绪不管是说话&#xff0c;还有肢体语言&#xff0c;这使得增加了信息接受者的信息量。下面引入两个词语来说明。给予与流露的含义给予&#xff1a;别人评价你做的菜好吃。流露&#xff1a;别人眉头一皱。…

探讨下如何更好的使用缓存 —— Redis缓存的特殊用法以及与本地缓存一起构建多级缓存的实现

大家好&#xff0c;又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容&#xff0c;将会通过系列专题&#xff0c;讲清楚缓存的方方面面。如果感兴趣&#xff0c;欢迎关注以获取后续更新。 通过前面的文章&#xff0c;我们一起剖析了Guava Cache、Caf…

如何在线录屏?怎么录制网课

当我们需要学习特定知识时&#xff0c;可以在网络上寻找教学视频进行学习。一般情况下&#xff0c;视频会一直保留在网上&#xff0c;可以随时随地观看。那您知道我们平常观看的网络课程是如何录制的吗&#xff1f;如何进行在线录屏&#xff1f;今天小编教您如何在线录制视频网…

C语言——指针进阶(含例题及详细代码分析)

文章目录导语&#xff1a;思维导图&#xff1a;1.字符指针2.指针数组3.数组指针3.1 数组指针的定义3.2 &数组名和数组名3.3 数组指针的使用4.数组参数、指针参数4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参5.函数指针6.函数指针数组7.指向函数指针数…

Django自定义认证系统原理及源码分析解读

疑问 Django在如何自定义用户登录认证系统的时候&#xff0c;大家都会里面立马说 自定义一个 或者多个backend&#xff0c;比如通过账号密码、邮箱密码&#xff0c;邮箱验证码、手机号短信验证码等等。 然后设置 在settings中配置一个 AUTHENTICATION_BACKENDS就行。 但是为什…

【尚硅谷】Java数据结构与算法笔记11 - 树结构的实际应用

文章目录一、堆排序1.1 堆排序基本介绍1.2 堆排序的基本思想1.3 堆排序步骤图解1.4 堆排序思路总结1.5 堆排序代码实现二、赫夫曼树2.1 基本介绍2.2 重要概念1.3 赫夫曼树构建思路图解1.4 赫夫曼树代码实现三、赫夫曼编码3.1 基本介绍3.2 原理剖析3.3 实践&#xff1a;数据压缩…

java运算符2023010

运算符&#xff1a; Java语言中的运算符可分为如下几种。 ➢ 算术运算符 ➢ 赋值运算符&#xff0c;/—/各种和等号组合的都是赋值运算符&#xff0c;赋值表达式是有值的&#xff0c;赋值表达式的值就是右边 被赋的值。例如String str2str表达式的值就是str。因此&#xff0c;赋…