题目一:【合并两个有序链表】力扣——21
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
#!/bin/bash
#合并两个有序链表
#author:yzt 2019-10-28
#
qian=`echo "$1"|awk -F , '{print $1}'|sed 's#->#\n#g'` #将链表一存放到变量$qian中
hou=`echo "$1"|awk -F , '{print $2}'|sed 's#->#\n#g'` #将链表二存放在变量$hou中
echo "$hou" >tmp.txt
declare -i aa=1
str=""
for i in $qian
do
hou_1=`sed -n "$aa p" tmp.txt`
str=$str$i,$hou_1,
aa=$[$aa+1]
done
echo "$str"|sed 's#,$##'|sed 's#,#->#g'
脚本思路:
1、此脚本并非为有序链表,按照笔者个人理解写的。作用是在一个链表中间隔插入另一链表的元素
2、此脚本的关键是在遍历链表一的过程中,如何获取对应链表二的元素
脚本效果:
[root@localhost leetcode]# ./hebinglianggeyouxulianbiao.sh "1->2->4,3->5->7"
1->3->2->5->4->7
[root@localhost leetcode]# ./hebinglianggeyouxulianbiao.sh "1->2->4,13->15->17"
1->13->2->15->4->17
[root@localhost leetcode]# ./hebinglianggeyouxulianbiao.sh "111->112->114,13->15->17"
111->13->112->15->114->17
题目二:【括号生成】
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
#!/bin/bash
#括号生成
#author:yzt 2019-10-28
#
cat /dev/null > tmp.txt
cat /dev/null >tmp1.txt
kuohao(){
while :
do
test -s tmp.txt || echo "(" >tmp.txt
for i in `cat tmp.txt`
do
zuo=`echo "$i"|sed 's#[][]*#\n#g'|grep -v '^$'|sort |uniq -c|sed -n '1 p'|awk '{print $1}'`
you=`echo "$i"|sed 's#[][]*#\n#g'|grep -v '^$'|sort |uniq -c|sed -n '2 p'|awk '{print $1}'`
[ -z $you ]&& you=0
if [ $zuo -gt $you ];then
if [ $zuo -eq $1 ];then
echo "$i)" >>tmp1.txt
else
echo "$i(">>tmp1.txt
echo "$i)">>tmp1.txt
fi
else
if [ $zuo -eq $1 ];then
cat tmp.txt
exit 0
else
echo "$i(" >>tmp1.txt
fi
fi
done
cat tmp1.txt >tmp.txt
cat /dev/null >tmp1.txt
done
}
kuohao $1
脚本逻辑:
1、生成括号的要素有以下两点:
第一:符号"("为左边第一个字符
第二:符号"("的个数等于符号")"的个数时,那么下一个只能是"(";若符号"("的个数大于符号")"的个数时,那么下一个符号可以为"("或者")"【前提是符号"("的个数暂未达到生成括号的个数】
脚本效果:
[root@localhost leetcode]# ./kuohaoshengcheng.sh 2
(())
()()
[root@localhost leetcode]# ./kuohaoshengcheng.sh 3
((()))
(()())
(())()
()(())
()()()
[root@localhost leetcode]# ./kuohaoshengcheng.sh 4
(((())))
((()()))
((())())
((()))()
(()(()))
(()()())
(()())()
(())(())
(())()()
()((()))
()(()())
()(())()
()()(())
()()()()