1、
#include <stdio.h>
int main()
{
int i;
int x[3][3]={1,2,3,1,2,3,1,2,3};
for(i=0;i<3;i++){
printf("%d,",x[i][i]);
}
return 0;
}
结果:1,2,3
2、
#include <iostream>
using namespace std;
int main()
{
int a[]={4,0,2,3,1};
int i,j,t;
for(i=1;i<5;i++){
t=a[i];
j=i-1;
while(j>=0&&t>a[j]){
a[j+1]=a[j];
--j;
}
a[j+1]=t;
}
for(int i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}
结果:
4
3
2
1
0
插入排序,降序
3、二叉树节点的对称序列是DKGCOBX,后序序列是KCGDBXO,则该二叉树的前序序列是(ODGKCXB) 注意:对称序列就是中序序列!!!
4、乘积差最大值寻找 题目描述:两个数对(a,b)和(c,d)之间的乘积差定义为(a * b)-(c * d)。例如,(5,6)和(2,7)之间的乘积差为(56)-(27)=16。给你一个整数数组nums,选出四个不同的下标w、x、y和z,使数对(nums[w],nums[x])和(nums[y],nums[z])之间的乘积差取到大值。返回以这种方式取得的乘积差中的最大值。 示例: 输入:nums=[4,2,5,9,7,4,8] 输出:64 解释:可以选出下标为3和6的元素构成第一个数对(9,8)以及下标1和5构成第二个数对(2,4)乘积差是(98)-(24)=64 输入:int型数组 注意,输入格式请严格参照“输入样例 ” 输出:int型 样例输入:[4,2,5,9,7,4,8] 样例输出:64
思考: (1)全为正数 / 负数时,直接是两个绝对值最大的数乘积 - 两个绝对值最小的数乘积; (2)有正+负数时 5、寻找英文句子中单词包含x为后缀的单词首个字母位置 题目描述:给定引文句子S和字符串x,判断x是否为S中某些单词的后缀,若匹配到则输出所有匹配单词的位置,否则输出-1。 例如:输入“this is an easy problem.” 和"is",输出[0,5]; 例如:输入“In love folly is always sweet” 和 “an”,输出[] 例如:输入“whatever is worth doing is worth doing well."和“well”,输出[39] 输入描述: 输入包含两行,第一行为S,第二行为x,长度不超过10000 输出描述: int型数组 样例输入: No one and you. “” 样例输出: [] 提示:因为给定的是英语句子,所以输入中可能存在标点符号。
6、二叉树查找 已知二叉搜索树如下所示(根节点记为root): [10] [6,15] [1,8] [13,18] [null,null][null,null] [12,14][17,19] 给定一个整数k,请你设计一个算法查找其中第 k 个最小元素(从1开始计算)。 备注:异常情况,输出-1 输入描述: 整数k:int型,k<=100 输出描述: 第k个最小元素:int型 样例输入:5 样例输出:12
|