E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
+刷题
Leetcode
刷题
笔记——二叉树篇
Leetcode
刷题
笔记——二叉树篇一、前言DFS是可一个方向去搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯,本文没有涉及太多和回溯相关的案例,对回溯相关的可以参考博主的另一篇文章
code_lover_forever
·
2025-05-26 20:24
Leetcode刷题笔记
深度优先
leetcode
笔记
python
打卡信奥
刷题
(1387)用C++实现信奥 B4098 [CSP-X2022 山东] 动物园
B4098[CSP-X2022山东]动物园题目描述某动物园里有nnn个场馆和mmm种动物(m≤nm≤nm≤n)。nnn个场馆的编号分别用1,2,3,..,n1,2,3,..,n1,2,3,..,n表示;mmm种动物的编号分别用1,2,3,..,m1,2,3,..,m1,2,3,..,m表示。每一个场馆中只饲养了一只动物,不同的场馆可能饲养着相同种类的动物。这个动物园的门票比较特殊,游客在购买门票时
Loge编程生活
·
2025-05-26 13:18
C++
c++
开发语言
算法
青少年编程
数据结构
Mysql
刷题
之正则表达式专题
一、基本语法要找满足正则表达式的字段:SELECTcolumnFROMtableWHEREcolumnREGEXP'pattern';--或SELECTcolumnFROMtableWHEREcolumnRLIKE'pattern';要找不符合正则表达式的字段:selectcolumnfromtablewherecolumnnotregexp'pattern'二、常用正则元字符元字符说明示例^匹配
fieldsss
·
2025-05-26 12:43
Mysql刷题
mysql
正则表达式
数据库
算法竞赛备考冲刺必
刷题
(C++) | 洛谷 P3392 涂条纹
本文分享的必
刷题
目是从蓝桥云课、洛谷、AcWing等知名
刷题
平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。
热爱编程的通信人
·
2025-05-26 01:06
c++
算法
天润融通对话TATA木门,AI大模型是企业客服行业未来的核心
第四天打卡#和牛牛一起
刷题
打卡#周记|6月16日六级终于考完了,不管结果怎么样我都觉得我已经尽力了
刷题
时间没规划好后面几天神经一直绷得很紧总#和牛牛一起
刷题
打卡(51733)##和牛牛一起
刷题
打卡#有没有老哥有
huaxinjiayou
·
2025-05-26 00:49
java
最少数量线段覆盖 - 华为OD统一考试(JavaScript题解)
华为OD机试题库《C++》限时优惠9.9华为OD机试题库《Python》限时优惠9.9华为OD机试题库《JavaScript》限时优惠9.9针对
刷题
难,效率慢,我们提供一对一算法辅导,针对个人情况定制化的提高计划
什码情况
·
2025-05-25 12:33
华为od
javascript
开发语言
算法
面试
数据结构
算法零基础如何入门
向一些算法学的好的学长学姐请教之后得到的答案都是
刷题
,但是我打开
刷题
网站,发现题很难,学习的知识点十分的零碎,没有构成知识体系,题和题之间没有什么关联,也不清楚一道题背后的知识点,好不容易搞懂一道题,打开下一道题还是不会
梦想赚大钱
·
2025-05-25 09:11
算法
学习
算法
leetcode hot100
刷题
日记——14.二叉树的最大深度
解答:/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullptr),right(nullptr){}*TreeNo
姬公子521
·
2025-05-25 01:22
力扣刷题专栏
leetcode
算法
职场和发展
小刚说C语言
刷题
—1155找找谁的身高超过全家的平均身高
1.题目描述找找谁的身高超过全家的平均身高。全家n口人,输入输出数据如下:(平均身高保留一位小数)。输入第一行有一个整数n(1intmain(void){intn;doublesum=0.0;intnums[11];scanf("%d",&n);for(inti=0;isum/n)printf("%d:%d",i+1,nums[i]);}return0;}今天内容到此结束,下次再见!
xueyinan
·
2025-05-25 00:15
c语言
Python蓝桥杯
刷题
:math
math.ceil(x):向上取整math.ceil(x)是Python标准库中math模块提供的一个函数,用于向上取整,即返回不小于x的最小整数。具体而言,如果x不是整数,ceil()将返回大于或等于x的最小整数,如果x是整数,则返回x本身。importmathresult=math.ceil(4.25)print(result)#Output:5result=math.ceil(7.0)pri
testleaf
·
2025-05-24 09:39
Python蓝桥杯刷题
蓝桥杯
python
Python蓝桥杯
刷题
:map函数的用法
map()函数是Python内置函数之一,用于对一个可迭代对象的所有元素应用一个指定的函数,返回一个新的可迭代对象(通常是一个列表)。map()的基本语法如下:map(function,iterable,...)function:对每个元素执行的函数。iterable:要处理的可迭代对象。map()将function应用于iterable中的每个元素,并返回一个包含结果的新可迭代对象。如果有多个可
testleaf
·
2025-05-24 09:09
Python蓝桥杯刷题
python
蓝桥杯
Python
刷题
:神奇的函数
今天刷的是PythonTip的Python入门挑战中的题,整体难度不高,适合小白练手以及巩固知识点。下面会进行详细讲解。每日一句即便落日缓缓没入地平线,余晖依然倾洒,映红半边天。恰似人生,哪怕行至低谷,也要绽放最后的光热,拼出属于自己的绚烂。目录每日一句31.判断是否通过考试32.判断两次输入是否相等33.多次调用同一个函数34.打印全名35.判断质数(使用函数)36.整数的幂37.打印个人信息3
扑克中的黑桃A
·
2025-05-24 09:36
PythonTip刷题
Python
python
开发语言
每日算法
刷题
Day11 5.20:leetcode不定长滑动窗口求最长/最大6道题,结束不定长滑动窗口求最长/最大,用时1h20min
6.1695.删除子数组的最大得分(中等)1695.删除子数组的最大得分-力扣(LeetCode)思想1.给你一个正整数数组nums,请你从中删除一个含有若干不同元素的子数组**。**删除子数组的得分就是子数组各元素之和。返回只删除一个子数组可获得的最大得分。2.题意转换:窗口内不含相同元素,哈希表维护即可代码c++:classSolution{public:intmaximumUniqueSub
爱coding的橙子
·
2025-05-24 00:01
算法
算法
leetcode
职场和发展
每日算法
刷题
计划Day12 5.21:leetcode不定长滑动窗口求最短/最小3道题,用时1h40min(有点长了)
求最短/最小一般题目都有「至少」的要求。想窗口成立的条件,right右移增强条件,然后while循环left右移最终破坏条件模版套路在while循环内更新答案classSolution{public:intminSubArrayLen(inttarget,vector&nums){intn=nums.size();longlongsum=0;intres=INT_MAX;intleft=0;for
爱coding的橙子
·
2025-05-24 00:01
算法
算法
leetcode
java
【D1,2】 贪心算法
刷题
文章目录不同路径II整数拆分二叉搜索树组合背包问题相等子序列不同路径II初始化的时候不能整列初始化为1,因为如果有障碍物,后面的都不能到达也不能整列初始化为0,因为状态转移的时候第一行第一列都没有检查,因此不能部分初始化整数拆分需要考虑几种情况:当前值,当前值拆分成两个部分(因为很小的数字拆的越多乘积越小)当前值拆成n个部分(此时前面一定是n个部分的最大值)二叉搜索树组合总共n个节点任选一个节点j
Faye_newTenant
·
2025-05-23 22:22
算法
笔记
算法
c++
Leetcode
刷题
笔记1 贪心算法part04
leetcode452用最小数量的箭引爆气球本题被如何更新边界考住了classSolution:deffindMinArrowShots(self,points:List[List[int]])->int:iflen(points)==1:return1result=1points.sort(key=lambdax:x[0])foriinrange(1,len(points)):ifpoints[
平乐君
·
2025-05-23 22:52
leetcode
刷题笔记1
leetcode
笔记
贪心算法
力扣
刷题
(第三十五天)
灵感来源-保持更新,努力学习-python脚本学习Excel表列名称解题思路Excel表列名称的规则类似于将数字转换为26进制,但与常规进制转换不同的是,这里的"A"对应1而不是0。因此,当余数为0时,需要特殊处理为'Z',并将商减1。具体步骤如下:取模运算:计算当前数字对26的余数,确定当前位的字符。字符转换:若余数为0,对应字符'Z',否则对应chr(64+remainder)。更新数字:将原
eachin_z
·
2025-05-23 10:52
leetcode
算法
职场和发展
【LeetCode: 209. 长度最小的子数组 | 滑动窗口】
算法题算法
刷题
专栏|面试必备算法|面试高频算法越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨作者简介:硕风和炜,CSDN-Java领域新星创作者,保研|国家奖学金|高中学习JAVA|大学完善
硕风和炜
·
2025-05-22 23:16
LeetCode每日一题打卡
面试必须掌握的101题
leetcode
算法
java
面试
滑动窗口
华为OD机试真题最新题库 (2025A卷+2025B卷+历史C+D+E卷) + 使用说明 +高效
刷题
(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
哪 吒
·
2025-05-22 18:45
搬砖工逆袭Java架构师
华为od
算法
python
2025B卷
华为OD机试
华为OD机试真题最新题库 (2025A卷+2025B卷+历史C+D+E卷) + 使用说明 +高效
刷题
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天
哪 吒
·
2025-05-22 18:45
搬砖工逆袭Java架构师
华为od
c语言
开发语言
华为OD机试
2025B卷
华为OD机试 - 字符串分隔(Python/JS/C/C++ 2025 A卷 100分)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随
哪 吒
·
2025-05-22 18:43
华为od
python
javascript
2025A卷
华为OD机试
水安ABC考试多选练习题库(13)
题库来源:【学视线】公众号提供水利水电安全员考试试题、水利安全员考试预测题、安全员考试真题、水利水电安全员证考试题库等,提供在线做题
刷题
,在线模拟考试,助你考试轻松过关。
职业考试资料墙
·
2025-05-22 09:46
水利水电安全员
题库
考试
职场和发展
QT修仙笔记 事件大圆满 闹钟大成
学习笔记牛客
刷题
闹钟时钟显示通过QTimer每秒更新一次QLCDNumber显示的当前时间,格式为hh:mm:ss,实现实时时钟显示。
Xiezequan
·
2025-05-22 07:06
qt
笔记
开发语言
题解 | #零食类商品中复购率top3高的商品#
有问必答##ai面试##和牛牛一起
刷题
打卡(51733)#打卡#和牛牛一起
刷题
huaxinjiayou
·
2025-05-22 06:53
java
自制JS某课脚本
似乎网络上也没有这个平台的
刷题
脚本。因此,我就简单地为他编写了一个脚本,让他可以放心地去做其他事情。简单分析了网页的结构,然后利用专业知识根据遇到的问题使用油猴插件来编写脚本,以满足各功能需求。
鬣主任
·
2025-05-22 03:36
加瓦Script
javascript
html
自动化
Sql
刷题
日志(day5)
面试:1、从数据分析角度,推荐模块怎么用指标衡量?推荐模块主要目的是将用户进行转化,所以其主指标是推荐的转化率推荐模块的指标一般都通过埋点去收集用户的行为并完成相应的计算而形成相应的指标数据,而这里的驱动形式阐述为结构化数据驱动更为贴切推荐的策略换个角度来说就是我们的策略能为业务能带来多少的收益,这时指标体系就会相当重要,但是不同类型的业务它们的指标体系都是不一样的,比如流量类型:PV(PageV
hkfkn
·
2025-05-21 14:39
sql
数据库
学习
Sql
刷题
日志(day3)
一、笔试1、min(date_time):求最早日期2、mysql中distinct不能与orderby连用,可以用groupby去重二、面试1、SQL中如何利用replace函数统计给定重复字段在字符串中的出现次数(length(all_string)-length(all_string,目标字符串,''))/length(target_string)2、讲一下Union和Join的区别UNIO
hkfkn
·
2025-05-21 14:38
sql
数据库
学习
mysql
Sql
刷题
日志(day9)
一、笔试1、limitoffset:分页查询SELECTcolumn1,column2,...FROMtable_nameLIMITnumber_of_rowsOFFSETstart_row;--跳过前start_row行,返回接下来的number_of_rows行。2、lag、lead:查询前后行数据--lag函数用于访问当前行的上一行(或指定行)的数据LAG(column,n,default_
hkfkn
·
2025-05-21 13:31
sql
数据库
LeetCode周练Contest-39代码解析(C++)
写在前面:LeetCode这个网站相比不必多说了吧,凡是IT圈子的人应该都知道这个网站,最近开始准备找工作,当然也免不了上去刷
刷题
,做一做比较经典的编程题,刚好看到LeetCode有个周练,便报名参加。
luuuyi
·
2025-05-21 03:26
C++
练习
算法
C++
从购物清单到数组乘积:探索除自身外数组的乘积问题|LeetCode 238 除自身以外数组的乘积
LeetCode238除自身以外数组的乘积点此看全部题解LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中)更多干货,请关注公众号【忍者算法】,回复【
刷题
清单】获取完整题解目录~生活中的算法想象你是一家糕点店的老板
忍者算法
·
2025-05-20 23:35
忍者算法
LeetCode题解秘籍
leetcode
算法
职场和发展
面试
跳槽
LeetCode Hot100
刷题
——轮转数组
56.轮转数组给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例2:输入:nums=[-1,-100,3,99],k=2输出:[3,99
圈圈编码
·
2025-05-20 23:02
leetcode
算法
职场和发展
java
LeetCode Hot100
刷题
——除自身以外数组的乘积
238.除自身以外数组的乘积给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例1:输入:nums=[1,2,3,4]输出:[24,12,8,6]示例2:输入:nums=[-1,1,0,-3,
圈圈编码
·
2025-05-20 23:32
leetcode
算法
职场和发展
java
c++
刷题
便捷函数(类似于stoi的小函数)
标题stoi(字符串转整形)map和set都有count成员函数,返回值是该key的个数,可以用来查是否存在该元素。boolis_sorted(nums.begin(),nums.end()检验是否有序INT_MAX,INT_MIN分别是整形最大和最小初始化二维矩阵vector>martix(n,vector\(n,0))使用getline(),可以实现对字符串分割stoi(字符串转整形)map和
羊羊羊i
·
2025-05-20 08:02
算法题
c++
算法
开发语言
华为od机试真题题库2025A卷(
刷题
建议)(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
哪 吒
·
2025-05-20 01:11
搬砖工逆袭Java架构师
华为od
算法
java
2025A卷
华为OD机试
华为od 2025 | 什么是华为od,od
刷题
方法,od机试真题清单(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
哪 吒
·
2025-05-20 01:11
搬砖工逆袭Java架构师
华为od
算法
华为OD机试
2025A卷
python
华为OD机试 - 最大股票收益 - 线性扫描(Python/JS/C/C++ 2025 A卷 100分)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
哪 吒
·
2025-05-20 01:11
华为od
python
javascript
2025A卷
华为OD机试
【LeetCode 热题 100】56. 合并区间 —— 一文弄懂排序+遍历经典解法(附Python代码)
题目链接LeetCode56.合并区间一、引言:区间合并,
刷题
路上的绊脚石?区间类问题是算法面试中常见的经典题型,尤其是“合并区间”问题,考察你对排序、区间重叠判断及边界处理的理解和编码能力。
未名编程
·
2025-05-20 01:09
LeetCode热题100详解
算法
leetcode
动态规划
华为OD机试 - 货币单位换算(Python/JS/C/C++ 2025 A卷 100分)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随
哪 吒
·
2025-05-20 01:39
华为od
python
javascript
算法
刷题
Day9 5.18:leetcode定长滑动窗口3道题,结束定长滑动窗口,用时1h
12.1852.每个子数组的数字种类数1852.每个子数组的数字种类数-力扣(LeetCode)思想找到nums所有长度为k的子数组中不同元素的数量。返回一个数组ans,其中ans[i]是对于每个索引0distinctNumbers(vector&nums,intk){intn=nums.size();vectorres(n-k+1);mapmp;for(inti=0;i数组1的总数为k,长度为k
爱coding的橙子
·
2025-05-19 15:32
算法
算法
leetcode
职场和发展
leetcode hot100
刷题
日记——1.两数之和
涉及知识点:vector、哈希表vector概念一维vector二维哈希力扣第一题:两数之和[link5](https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&envId=top-100-liked)vector从基础来,老子不信了自己还能搞不定这100道题了!详见链接:link1《【C++STL】vect
姬公子521
·
2025-05-19 13:47
力扣刷题专栏
leetcode
算法
c++
leetcodehot100
刷题
记录
hash1.hash映射给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。wp: classSolution{ publicint[]twoSum(int[]nums,inttarget){ Mapmap=newHa
mengnankk
·
2025-05-19 12:15
leetcode
算法
数据结构
哈希算法
java
leetcodehot100
刷题
——排序算法总结
排序算法总结冒泡排序介绍步骤(以升序排序为例)算法实现复杂度分析时间复杂度空间复杂度是否为稳定排序:是稳定排序的定义选择排序介绍步骤(以升序排序为例)算法实现复杂度分析时间复杂度空间复杂度是否为稳定排序:否举个栗子!今天先总结这俩,明天接着补~冒泡排序介绍冒泡排序(BubbleSort)是一种简单的比较排序算法,其工作原理类似于气泡在水中上升的过程。它通过重复遍历要排序的列表,比较相邻的两个元素,
姬公子521
·
2025-05-19 12:43
力扣刷题专栏
排序算法
算法
数据结构
c++
LeeCode
刷题
笔记
LeetCode)全球极客挚爱的技术成长平台CSONCodeTop面试题目总结https://leetcode.com/problemset/(英文官方题库)基础语法-01-20|阿秀的学习笔记10天
刷题
计划
Livan.Tang
·
2025-05-19 10:35
C++
笔记
c++
华为OD机试 - 幻方修复(Python/JS/C/C++ 2025 B卷 200分)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
哪 吒
·
2025-05-19 08:19
搬砖工逆袭Java架构师
华为od
python
javascript
华为OD机试
2025B卷
华为OD机试 - 虚拟游戏理财 - 贪心算法(Python/JS/C/C++ 2025 A卷 200分)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随
哪 吒
·
2025-05-19 08:49
华为od
游戏
贪心算法
华为OD机试 - 最佳对手(Python/JS/C/C++ 2025 A卷 200分)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD
刷题
交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随
哪 吒
·
2025-05-19 08:49
华为od
python
javascript
2025A卷
华为OD机试
华为OD机试 - 输出指定字母在字符串的中的索引(Python/JS/C/C++ 2025 A卷 100分)
华为OD机试2025A卷题库疯狂收录中,
刷题
点这里专栏导读本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。
哪 吒
·
2025-05-19 08:19
华为od
python
javascript
华为OD机试
2025A卷
免费分享 | 中小学到大学全科教材资源库
数学专项资源:单独整理了初中练习题(带答案),适合
刷题
巩固。开源公益:项目初衷是对抗教育资源垄断,让更多人(包括海外华人家庭)免费获取正版教材,消除
The god of big data
·
2025-05-19 06:03
学习
学习方法
udp多点通信和心跳包
刷题
#UDP多点通信核心要点##基础通信模式###单播通信-一对一通信方式-UDP默认通信模式-地址指向具体目标主机###广播通信-一对多通信机制-地址范围:`xxx.xxx.xxx.255`-仅限局域网传输
zm
·
2025-05-19 04:17
udp
网络协议
网络
【LeetCode Hot100 | 每日
刷题
】螺旋矩阵
54.螺旋矩阵-力扣(LeetCode)题目:给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6
理想奋斗中
·
2025-05-18 22:14
LeetCode每日刷题
leetcode
矩阵
算法
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他