版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37770023/article/details/84708934
【数据结构与算法经典问题解析--java语言描述】_第20、21章_学习记录
第20章:
第21章:
1.1 本章主要介绍的是对于面试和考试有用的话题
1.2 位运算的使用
1.2.1 按位与操作
按位与(And)操作测试两个二进制数,如果两个数对应的位值均为1,则返回值中该位值为1;如果不同时为1,则返回0;
1.2.2 按位或操作
按位或(OR)操作测试两个二进制数,如果两个数对应的位值至少有一个为1,则返回值中该位值为1;当且仅当它们同时为0时,返回0;
1.2.3 按位异或操作
按位异或操作测试两个二进制数,如果两个数对应的位值不相同,则返回值中该位值为1;如果相同,则返回0;
1.2.4 按位左移操作
按位左移操作将操作数中的所有位向左移动,并用0填充空出的位。
1.2.5 按位右移操作
按位右移操作将操作数的所有位向右移动
1.2.6 按位补操作
按位补操作将一个二进制操作数的位取反。
1.3 其他编程问题
问题1: 设计一个算法,按照螺旋顺序依次输出矩阵中的元素。
问题2:基于反转算法的数组旋转问题。设计一个函数rotate(A[], d, n), 该函数将大小为n的数组旋转d 个元素。例如,数组1, 2, 3, 4, 5, 6, 7 在经过2个元素的旋转后变为3, 4, 5, 6, 7, 1, 2;
问题3:移动0到末尾。
问题4:将字符串中的空格移到末尾。