数据结构与算法
踏踏实实做码农
低调做人,高调做事
展开
-
数据结构与算法 - 链表 - 反转
题目反转一个单链表。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路1、定义一个prev节点、一个cur当前节点、一个nextTmp节点2、循环链表,将cur的next指向prev代码public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode cur = head;原创 2020-11-09 20:49:19 · 176 阅读 · 0 评论 -
数据结构与算法 - 字符串 - 反转
题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。解题思路1、定义一个tmp变量,用来中转交换的变量2、第一个和最后一个交换,第二个和倒数第二个交换,直到长度小于数组长度除以二代码public void reverseString(char[] s) { for (int i = 0; i < s.length / 2; i++) {原创 2020-11-05 20:31:08 · 289 阅读 · 0 评论 -
数据结构与算法 - 数字 - 好数对的数目
题目给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。nums = [1,2,3,1,1,3],有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5)解题思路构建map,key为nums[i],值为次数使用组合算法,Cn2累加,即rst += n*(n-1)/2代码public static int numIdenticalPairs(int原创 2020-11-04 20:56:09 · 213 阅读 · 0 评论 -
数据结构与算法 - 数字 - 两个二进制数求和
题目给定两个二进制字符串,返回它们的和(用二进制表示)。解题思路1、从后往前逐个取出字符2、定义一个进位的变量3、每一位的和等于(字符串1+字符串2+进位变量)%24、进位变量等于(字符串1+字符串2+进位变量)/25、逐位求和后的字符串反转代码public String addBinary(String a, String b) { StringBuffer rst = new StringBuffer(); int maxLen = a.length() >= b原创 2020-11-03 19:44:00 · 694 阅读 · 0 评论 -
数据结构与算法 - 数字 - 回文数
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。正例:121 | 1 | 12321反例:-121 != 121- | 100 != 001 1234 != 4321解题思路1、先排除负数、能被10整除的数据2、反转整数的一半,和整数比较是否相等3、21反转,可以用 21 % 10 * 10 + 21 / 10代码 public static boolean isPalindrome(int x) { // 负数、0、被10整除的原创 2020-11-02 11:16:23 · 509 阅读 · 1 评论
分享