在学习算法的过程中记录,日积月累,提高算法相关能力😄
数据去重 | 输出字符串中的第一个不重复的字符。 例如:“hello”输出 ‘h’ , “abbac”输出 ‘c’ ,“abdabe”输出 ‘d’ 参考答案 |
对有序int[]去重,并输出去重后的长度,并打印出来,要求时间复杂度为O(n),空间复杂度为O(1)。 例如:int[] array = {-1,0,0,2,4,4,4,6}; 返回长度为:5,打印结果为:-1,0,2,4,6 参考答案 | |
数据查询 | 查询int[]中满足两个数据相加等于指定数值的索引,相同索引不能使用两次。 例如:已知int[] nums = [3, 5, 7,11, 15], target = 10,返回符合条件的索引。 nums[0] + nums[2] = 3 + 7 = 10,nums[1]+nums[1]=10;因为nums相同索引只能使用一次,所以返回[0, 1] 参考答案 |
查询String[]中以相同部分开始的的字符串。 例如:["flower","flow","flight"] 返回:fl;["dog","racecar","car"] 返回:“” 参考答案 | |
给定一个长度为n的int数组,判断最多修改一个数据后,该数组是否为非递减数组。 例如:[3,4,2,3] 返回:false;[3,6,4,5] 返回:true;[4,2,3] 返回true; 参考答案 | |
数据反转 | 对int类型的数据进行反转。 例如:已知int num = 123,结果为321,如果超出范围返回0 参考答案 |
判断int类型的数据是否是回文数据(反转之后是否相等)。 例如:int num = 121,结果为true;int num = -121,结果为false;int num = 12,结果为false; 参考答案 | |
数据转换 | 将罗马数字转成对应的int类型数据。对应关系如下: I => 1 V => 5 X => 10 L => 50 C => 100 D => 500 M => 1000 例如:输入“III”,输出:3,输入“IV”,输出:4,输入“IX”,输出:9,输入“LVIII,输出:58(L=50,V=5,III=3),输入“CMMXCIV”,输出:1994(M=1000,CM=900,XC=90,IV=4) 参考答案 |
数据结构 | 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果希望使用双链表,还需要一个属性prev来指示链表中的前一个节点。假设链表中的所有节点都是0索引的。 例如:MyLinkedList linkedList = new MyLinkedList(); linkedList.addAtHead(1); linkedList.addAtTail(3); linkedList.addAtIndex(1, 2); // linked list becomes 1->2->3 linkedList.get(1); // returns 2 linkedList.deleteAtIndex(1); // now the linked list is 1->3 linkedList.get(1); // returns 3 参考答案 |