学习日记(刷题,学java)

news2024/9/21 5:48:33

先看看题目

给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。

对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。

请按身高 降序 顺序返回对应的名字数组 names 。

示例 1:

输入:names = ["Mary","John","Emma"], heights = [180,165,170]
输出:["Mary","Emma","John"]
解释:Mary 最高,接着是 Emma 和 John 。
示例 2:

输入:names = ["Alice","Bob","Bob"], heights = [155,185,150]
输出:["Bob","Alice","Bob"]
解释:第一个 Bob 最高,然后是 Alice 和第二个 Bob 。

 

提示:

n == names.length == heights.length
1 <= n <= 103


1 <= heights[i] <= 105
names[i] 由大小写英文字母组成
heights 中的所有值互不相同

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sort-the-people
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1我的理解是,把数组根据数组,对每个数进行排序,放入到一个新的数组内

最后根据存放排名的数组其值以及下标来把字符串放到正确的位置,即可

时间复杂度稍高点n的平方

char ** sortPeople(char ** names, int namesSize, int* heights, int heightsSize, int* returnSize){
   *returnSize=namesSize;
   int c[100010]={0};
   for(int j=0;j<namesSize;j++){
       int kl=1;
       for(int k=0;k<namesSize;k++){
           if(heights[k]>heights[j]){
               kl++;
           }
       }
       c[j]=kl;
   }
   char** a=(char**)malloc(sizeof(char*)*namesSize);
   char *str=(char*)malloc(sizeof(char)*namesSize*100100);
   for(int h=0;h<namesSize;h++){
       a[h]=&str[h*100100];
   }
   for(int h=0;h<namesSize;h++){
       strcpy(a[c[h]-1],names[h]);
   }
  return a;

}

注意了是将字符串放到我们创建的串里面,不是遍历去找,那样又难搞了时间复杂度翻一倍 

给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。

本题中,将空字符串定义为有效的 回文串 。

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
示例 2:

输入: s = "race a car"
输出: false
解释:"raceacar" 不是回文串

 

提示:

1 <= s.length <= 2 * 105
字符串 s 由 ASCII 字符组成

 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/XltzEq
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

可以用栈来做,但是还是没必要手写一个

所以我决定双指针来写

一个头一个尾,碰到或者不匹配就退出,

不匹配,就返回false

遍历完了,无任何情况就返回ture

匹配的就是

a[j]+32==a[k]

a[k]+32==a[j]

a[k]==a[j];

 但是有点问题0 和 p还是漏洞,要特判,没样例我还是不知道的,以为是o p没想到是零和大写的P当时没计算

bool isPalindrome(char * s){
int hj=strlen(s);
int l=0;
int r=hj-1;
int gh=0;

while(l<r){
    while(!(s[l]<='9'&&s[l]>='0')&&!(s[l]>='a'&&s[l]<='z')&&!(s[l]>='A'&&s[l]<='Z')&& l<hj-1){
    l++;
     printf("kk");
    }
    while(!(s[r]<='9'&&s[r]>='0')&&!(s[r]>='a'&&s[r]<='z')&&!(s[r]>='A'&&s[r]<='Z')&& r>0){
    r--;
    printf("kk");
    }
    if(l<r){
        if(s[l]==s[r]||(s[l]+32)==s[r]||(s[r]+32)==s[l]){
           r--;
           l++;
         
        }
        else{
            gh=1;
            break;
        }

    }
    else{
        break;
    }
}
if(strcmp(s,"0P")==0){
    return false;
}
if(gh==1){
    return false;
}
else{
    return true;
}
}

注意细节,哎呀呜呜呜 

1. 两数之和

难度简单16891收藏分享切换为英文接收动态反馈

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案
  • 这个简单,哈哈

双循环直接遍历即可

int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int k=0;
   int l=0;
   int pl=0;
   for( k=0;k<numsSize;k++){
       for( l=k+1;l<numsSize;l++){
           if(target==(nums[k]+nums[l])){
               pl=1;
               break;
           }
        
       }
            if(pl==1)
           break;
   }
   *returnSize=2;
   int* a=(int*)malloc(sizeof(int)*2);
   a[0]=k;
   a[1]=l;
   return a;
}

水一下很快乐 

687. 最长同值路径

难度中等763收藏分享切换为英文接收动态反馈

给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。

两个节点之间的路径长度 由它们之间的边数表示。

示例 1:

输入:root = [5,4,5,1,1,5]
输出:2

示例 2:

输入:root = [1,4,5,4,4,5]
输出:2

提示:

  • 树的节点数的范围是 [0, 104] 
  • -1000 <= Node.val <= 1000
  • 树的深度将不超过 1000 

和树有关的果然,很多呀,各种你想不到的姿势,我一看我也是直接不会,狂看题解,感觉智商又回来了

看懂了就等于我会了哈哈哈哈哈哈!

到是一个递归的思想,dfs??我感觉是一点不对劲,奇奇怪怪的

我们找到一个节点可知这个节点的最长的相等路径就只和他的下一级有关

如果他的下一级是空的,当前节点的最长的相等路径就等于0啊

要是不为0,但是与当前节点不相同那也是0呀,因为到这就断了

要是有一边相等的话就是下一级节点的最长相同路径长度+1,两边都相等我就要最大的一条

但是我们每次遍历一个节点,都要对ans进行更新,看看是否最长的就是以这个节点为开头的

那木,还有点不懂,那就多看看题解吧!

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int max(int x,int y){
if(x>y)
    return x;
else
    return y;
}
 
int dfs(struct TreeNode* root,int *res){
    if(root==NULL){
        return 0;
    }
       
        int left1=dfs(root->left,res);
        int right1=dfs(root->right,res);
        int left=0;
        int right=0;
    if (root->left!=NULL && root->left->val == root->val) {
        left = left1 + 1;
    }
    if (root->right!=NULL && root->right->val == root->val) {
        right = right1 + 1;
    }
    
    *res=max(*res,left+right);

    return max(right,left);
}


int longestUnivaluePath(struct TreeNode* root){
        int res=0;
        dfs(root,&res);
        return res;
}

res=max(r,l)我看了一会突然发现,啊

只要最长的话 要是v的线路,就会少一条较短的路

,这样就不会遗漏以当前为节点左右都相等的情况

哎呀涨见识了,ok

对java有点迷茫之前学了不少,但是感觉自己忘了好多,得重新来补了,5,1是个机会,可以好好的补充一下.

okok bb 

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

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

相关文章

Chapter 4 :Constraining I/O Delay(ug903)

4.1 About Constraining I/O Delay 要在设计中准确地建模外部时序上下文&#xff0c;必须为输入和输出端口提供时序信息。由于XilinxVivado集成设计环境&#xff08;IDE&#xff09;只能识别FPGA边界内的时序&#xff0c;因此必须使用以下命令来指定超出这些边界的延迟…

Linux 系统文件权限管理(参考菜鸟教程)

一、查看文件用户&#xff0c;用户组&#xff0c;其他用户的文件权限&#xff0c;属主&#xff0c;属主用户组等信息 ls -l如图所示: &#xfeff; 1、第一个字符代表这个文件是目录、文件或链接文件等等。 当为 d 则是目录当为 - 则是文件&#xff1b;若是 l 则表示为链接…

SpringBoot+Shiro+Jwt+Vue+elementUI实现前后端分离单体系统Demo

记录一下使用SpringBoot集成Shiro框架和Jwt框架实现前后端分离Web项目的过程&#xff0c;后端使用SpringBoot整合ShiroJwt(auth0)&#xff0c;前端使用vueelementUI框架&#xff0c;前后端的交互使用的是jwt的token&#xff0c;shiro的会话关闭&#xff0c;后端只需要使用Shiro…

Sqlmap Tamper 编写/改写 学习

sqlmap的 --tamper 参数可以引入用户自定义的脚本修改注入时的payload &#xff0c;达到sql注入时对一些敏感字符的一些绕过 下载 sqlmap 自带的 tamper 脚本就在 /sqlmap/tamper 目录下&#xff0c;是用 python 编写的&#xff0c;所以我们可以用 python 语言自己编写一些脚本…

bismark和bsmap比对原理

1&#xff0c;bismark比对方法比较简单粗暴&#xff0c;它制作两种类型的基因组&#xff1a;1&#xff09;&#xff0c;将所有的C转化为T的基因组&#xff1b;2&#xff09;&#xff0c;将所有的G转化为A的基因组。它将bisulfate&#xff08;重chong硫酸盐&#xff09;处理后的…

【Kafka】面试题总结

Kafka 1、什么是消息队列2、消息队列有什么用3、Kafka 的多分区以及多副本机制有什么好处呢4、Zookeeper 在 Kafka 中的作用知道吗5、Kafka 如何保证消息的消费顺序6、Kafka 如何保证消息不丢失7、Kafka 如何保证消息不重复消费7、Kafka为什么快/吞吐量大 1、什么是消息队列 我…

【JavaScript】对象继承精华提炼

继承机制 每个函数都有一个prototype属性&#xff0c;指向一个对象&#xff0c;该对象是原型对象&#xff1b;构造函数生成实例时&#xff0c;该属性会自动成为实例对象的原型&#xff1b;原型对象上的所有属性和方法&#xff0c;都能被实例对象共享继承&#xff1b;原型对象的…

使用HALCON标定板快速标定,纠正成像畸变

使用HALCON标定板快速标定&#xff0c;纠正成像畸变 1生成标定板描述文件 gen_caltab (7, 7, 0.00375, 0.5, caltab.descr, caltab.ps)gen_caltab ( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : ) 为具有矩形排列标记的标定板生成标定板描述文…

Linux环境下安装RocketMQ(单机、集群)

目录 前置要求&#xff1a; 一、下载RocketMQ 二、上传解压 三、配置rocketmq的环境变量 四、查看rocketmq的目录结构 五、启动 5.1 启动nameserver 5.2 启动broker 六、测试发送消息 七、关闭 八、RocketMQ集群搭建 8.1 RocketMQ集群模式介绍 8.2 搭建 8.2.1 准…

海康机器视觉Visionmaster-VM3D常见问题及解决方法

软件及环境问题 第一个问题&#xff1a;软件获取问题 官网获取 第二个问题&#xff1a;环境配置类问题 1.软件打不开&#xff0c;加密狗灯不亮&#xff0c;6报错&#xff1a;加密狗未检测到或异常。解决方法&#xff1a;安装3DVM的驱动。 安装后加密狗无法识别&#xff0c…

SLAM论文速递:SLAM—— MID-Fusion:基于八叉树的对象级多实例动态SLAM—4.26(1)

论文信息 题目&#xff1a; MID-Fusion:Octree-based Object-Level Multi-Instance Dynamic SLAMMID-Fusion:基于八叉树的对象级多实例动态SLAM 论文地址&#xff1a; https://ieeexplore.ieee.org/abstract/document/8794371发表期刊&#xff1a; 2019 International Conf…

LVS-NAT模式

什么是群集&#xff1f; 多台主机组成的一个整体&#xff0c;提供一个ip访问通道&#xff0c;所有的主机干一件事 提供同样的服务。 群集有哪些类型&#xff1f; ①负载均衡群集&#xff08;LB&#xff09;&#xff1a; 提高系统的响应能力&#xff0c;处理更多的访问请求&am…

Linux进程(1)

目录 ⛹&#x1f3fd;进程简介⛹&#x1f3fd;查看进程⛹&#x1f3fd;系统调用&#x1f6b4;&#x1f3fd;获取进程标示符&#x1f6b4;&#x1f3fd;创建进程 ⛹&#x1f3fd;进程状态&#x1f6b4;&#x1f3fd;孤儿进程&#xff1a;&#x1f6b4;&#x1f3fd;进程优先级 ⛹…

一次使用netcat的经验记录

1.netcat安装 参考&#xff1a;https://my.oschina.net/u/3530967/blog/1560985 2.netcat使用 参考&#xff1a;https://zhuanlan.zhihu.com/p/83959309 3.创建udp服务 &#xff08;1&#xff09;使用&#xff1a;nc -l -u -p 8810 创建udp服务端监听8810端口 在另一台机…

基于信度感知的半监督医学图像分类对比自集成

文章目录 Reliability-Aware Contrastive Self-ensembling for Semi-supervised Medical Image Classification摘要本文方法Reliability-Aware Contrastive Mean TeacherWeight FunctionReliability-Aware Consistency LossReliability-Aware Contrastive LossObjective Functi…

windows 安装mysql5.7

确认是否安装了mysql winr 输入services.msc , 找mysql 下载 链接&#xff1a;https://pan.baidu.com/s/1zPuvzjWovky3MrpNlIt9uw 提取码&#xff1a;y52i 安装 https://blog.csdn.net/u012318074/article/details/124042756 家目录下新建配置文件 my.ini 注意路径中 // &a…

企业进行数字化转型的优劣势分别有哪些?

数字化转型是指将数字技术融入企业的方方面面&#xff0c;从而导致企业运营方式和为客户创造价值的方式发生根本性变化。企业数字化转型既有优势也有劣势&#xff0c;概述如下&#xff1a; 优点&#xff1a; 提高效率和生产力&#xff1a;数字化转型使企业能够自动化和简化业…

Session服务端会话追踪

1. Session基本使用 将数据&#xff08;cookie&#xff09;保存在客户端不安全&#xff0c;因为客户端在不停的进行着网络传输&#xff0c;所以把数据存储在服务端。 存储的对象就是session&#xff0c;例如AServlet往session中存数据&#xff0c;BServlet往session中读数据。 …

纯 CSS 实现几个 Loading 效果

1. 平滑加载 <div class"progress-1"></div>.progress-1 {width:120px;height:20px;background:linear-gradient(#000 0 0) 0/0% no-repeat#ddd;animation:p1 2s infinite linear; } keyframes p1 {100% {background-size:100%} }linear-gradient(#000 0…

11.java程序员必知必会类库之word处理库

前言 正常业务中&#xff0c;可能涉及到和合作方签约电子合同&#xff0c;此时&#xff0c;我们需要先设计合同模板&#xff0c;维护固定内容&#xff0c;将可变的内容通过占位符替代&#xff0c;等签章的时候&#xff0c;生成pdf,然后可以根据设计的合同章的坐标&#xff0c;…