遍历法求链表翻转
1、链表为空,返回头节点
2、定义两个结点 pre 为 null ,cur指向头节点
3、遍历链表时,定义临时结点存放 cur 的下一结点,同时让 cur 指向 pre
4、因为要向后遍历,pre 向后移到 cur 的位置,cur 移到刚刚定义的临时结点位置 (达到链表反转效果) …(以此循环)
5、最后因 cur == null 跳出循环, pre 在cur 的前一位,所以返回 pre 即可
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null) return head;
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
}
}
两数之和:
js实现:暴力求解:
var twoSum = function(nums, target) {
for(let i=0;i<nums.length;i++){
for( let j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
return [i,j]
}
}
}
};
整数反转:
class Solution {
public int reverse(int x) {
long res=0;
while(x!=0){
res=res*10+x%10;
x/=10;
}
if((int)res==res){
return (int)res;
}else{
return 0;
}
}
}
|